본문 바로가기
CTF/SuNiNaTaS

[CTF] SuNiNaTaS(써니나타스) 6번 Write-Up | Web

by spareone 2022. 10. 5.

 써니나타스 6번 문제풀이 Write Up 입니다.

[그림 1] Level 6 페이지

문제에 접속하면 게시판 하나가 있습니다.

글이 5개가 있는데, 전부 눌러보도록 하겠습니다.

[그림 2] 첫 번째 게시물

첫 번째 게시물입니다. 작성자가 suninatas인 글을 보라고 합니다.

[그림 3] 두 번째 게시물

두 번째 게시물입니다. md5 해시 툴이 있는 사이트인가 봅니다.

[그림 4] 세 번째 게시물을 클릭했을 때 나오는 페이지

세 번째 게시물을 클릭했더니, 패스워드 입력을 요구하는 페이지가 나왔습니다.

SQL 문도 같이 있는 것을 보니, SQL Injection을 통해 해결하는 문제인 것 같습니다.

[그림 5, 6] 네 번째, 다섯 번째 게시물

그 외 게시물들은 별 내용이 없습니다.

세 번째 게시물이 핵심인 것 같습니다.

 

패스워드 요구 페이지 아래의 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'#  를 작성하면 될 것 같습니다. 한 번 해보겠습니다.

[그림 7] SQL Injection에 실패해서 나오는 메시지

안 되네요. 역시 세상은 호락호락하지 않습니다.

Filtering이 걸려있는 것 같은데, 어떤 단어가 filtering 되는지 찾아보겠습니다.

[그림 8, 9] ' 문자가 filtering이 되는지 확인하는 모습

' 를 넣고 확인을 눌러보았는데, 다음과 같이 Worng Query 메시지가 떴습니다.

(사실 Wrong Query가 맞는데, 문제 만들 때 오타가 난 것 같습니다.)

SQL문이 잘못되어 나오는 메시지라, 딱히 filtering 되는 것 같지는 않아 보입니다.

(이런 식으로 따옴표를 넣어 SQL 오류 메시지가 뜬다면 SQL Injection 공격이 된다고 합니다.)

[그림 10, 11] or이 filtering이 되는지 확인하는 모습

or은 딱히 filtering 되지는 않습니다.

[그림 12, 13] 1이 filtering이 되는지 확인하는 모습

당연히 이건 아니겠고...

[그림 14, 15] =이 filtering이 되는지 확인하는 모습

=는 filtering이 되고 있습니다.

[그림 16, 17] #이 filtering이 되는지 확인하는 모습

#도 filtering 되고 있습니다.

즉, 현재 =, # 두 개가 filtering 되고 있습니다.

이 두 개를 우회할 방법을 궁리해봅니다.

[그림 18, 19] <이 filtering이 되는지 확인하는 모습

<나 >는 딱히 filtering 되지 않습니다.

[그림 20, 21] --이 filtering이 되는지 확인하는 모습

주석을 나타내는 # 대신 --를 입력해 보았더니 filtering에 걸리지 않습니다.

[그림 22, 23] 공백이 filtering이 되는지 확인하는 모습

마지막으로 공백도 딱히 filtering에 걸리지 않습니다.

 

그렇다면, ' or '1' == '1'# 대신 ' or 1 < 2-- 를 입력하면 성공할 것 같습니다.

[그림 24, 25] SQL Injection에 성공한 모습

Injection에 성공했고 flag로 보이는 글자가 나왔습니다.

[그림 26] flag 인증에 실패한 모습

응 아니야

 

flag가 따로 있나 봅니다.

다시 3번째 글로 돌아가 봅니다.

 

[그림 27] 세 번째 글

key를 찾으라고 합니다.

[그림 28] 세 번째 글의 소스코드

F12를 눌러보니 다음과 같은 힌트가 있습니다.
로마의 첫 번째 황제는 아우구스투스인데, 이게 flag인가 봅니다.
Auth 페이지에 영어로 아우구스투스 입력하면 인증이 완료됩니다.

댓글