써니나타스 6번 문제풀이 Write Up 입니다.
문제에 접속하면 게시판 하나가 있습니다.
글이 5개가 있는데, 전부 눌러보도록 하겠습니다.
첫 번째 게시물입니다. 작성자가 suninatas인 글을 보라고 합니다.
두 번째 게시물입니다. md5 해시 툴이 있는 사이트인가 봅니다.
세 번째 게시물을 클릭했더니, 패스워드 입력을 요구하는 페이지가 나왔습니다.
SQL 문도 같이 있는 것을 보니, SQL Injection을 통해 해결하는 문제인 것 같습니다.
그 외 게시물들은 별 내용이 없습니다.
세 번째 게시물이 핵심인 것 같습니다.
패스워드 요구 페이지 아래의 SQL 문을 자세히 살펴보겠습니다.
select szPwd from T_Web13 where nIdx = '3' and szPwd = '"&pwd&"'
이렇게 됩니다. "&pwd&" 이 부분이 실제 들어오는 값 같습니다.
이 입력 부분을 통해 우회를 해 봅시다.
select szPwd from T_Web13 where nIdx = '3' and szPwd = '' or '1' == '1'# '
이런식으로 우회하면 되지 않나 싶습니다.
이렇게 한다면 패스워드에는 ' or '1' == '1'# 를 작성하면 될 것 같습니다. 한 번 해보겠습니다.
안 되네요. 역시 세상은 호락호락하지 않습니다.
Filtering이 걸려있는 것 같은데, 어떤 단어가 filtering 되는지 찾아보겠습니다.
' 를 넣고 확인을 눌러보았는데, 다음과 같이 Worng Query 메시지가 떴습니다.
(사실 Wrong Query가 맞는데, 문제 만들 때 오타가 난 것 같습니다.)
SQL문이 잘못되어 나오는 메시지라, 딱히 filtering 되는 것 같지는 않아 보입니다.
(이런 식으로 따옴표를 넣어 SQL 오류 메시지가 뜬다면 SQL Injection 공격이 된다고 합니다.)
or은 딱히 filtering 되지는 않습니다.
당연히 이건 아니겠고...
=는 filtering이 되고 있습니다.
#도 filtering 되고 있습니다.
즉, 현재 =, # 두 개가 filtering 되고 있습니다.
이 두 개를 우회할 방법을 궁리해봅니다.
<나 >는 딱히 filtering 되지 않습니다.
주석을 나타내는 # 대신 --를 입력해 보았더니 filtering에 걸리지 않습니다.
마지막으로 공백도 딱히 filtering에 걸리지 않습니다.
그렇다면, ' or '1' == '1'# 대신 ' or 1 < 2-- 를 입력하면 성공할 것 같습니다.
Injection에 성공했고 flag로 보이는 글자가 나왔습니다.
응 아니야
flag가 따로 있나 봅니다.
다시 3번째 글로 돌아가 봅니다.
key를 찾으라고 합니다.
F12를 눌러보니 다음과 같은 힌트가 있습니다.
로마의 첫 번째 황제는 아우구스투스인데, 이게 flag인가 봅니다.
Auth 페이지에 영어로 아우구스투스 입력하면 인증이 완료됩니다.
'CTF > SuNiNaTaS' 카테고리의 다른 글
[CTF] SuNiNaTaS(써니나타스) 8번 Write-Up | Web (0) | 2022.10.05 |
---|---|
[CTF] SuNiNaTaS(써니나타스) 7번 Write-Up | Web (0) | 2022.10.05 |
[CTF] SuNiNaTaS(써니나타스) 5번 Write-Up | Web (0) | 2022.10.02 |
[CTF] SuNiNaTaS(써니나타스) 4번 Write-Up | Web (0) | 2022.10.02 |
[CTF] SuNiNaTaS(써니나타스) 3번 Write-Up | Web (0) | 2022.10.02 |
댓글