문제: http://suninatas.com/challenge/web06/web06.asp
board에 5개의 글이 있다.
가장 먼저 Hint를 보자.
suninatas의 글을 읽어보라고 되어 있다.
Writer가 suninatas인 작성글을 확인해보자.
password를 입력하는 input과 그 아래에 DB문법으로 작성된 쿼리가 있다.
이걸보니 Blind SQL Injection이 생각났다.
Blind SQL Injection은 쿼리의 참과 거짓의 판별을 통해 원하는 결과를 도출해내는 공격 방법이다.
일반적으로 사용하는 여기서 우리가 입력하는 내용이 pwd에 들어가게 될 듯하다.
그 점을 고려해서 제일 흔하게 쓰이는 ' or 1=1#을 입력해봤다.
해당 쿼리는 못 쓰게 막혀있다. 아마 쿼리를 이루는 문자중에 사용하지 못 하도록 막아놓은 게 있을 것 같다.
하나씩 입력해가면서 어떤 문자를 필터링 시키는지 확인해보자.
확인결과 =와 #을 필터링 시키고 있었다. 이 문자들을 대체할 수 있는 다른 문자를 사용해보겠다.
결과를 참 또는 거짓으로 만들 수 있는 비교 연산자 <와 주석 처리를 할 수 있는 -문자를 확인해보겠다.
확인 결과 둘 다 필터링 되지 않았다. 이것들을 활용해서 다시 쿼리를 작성해보자.
' or 1<2--
새로 작성한 쿼리를 입력하면 auth_key를 알려줌과 동시에 해당 글을 읽을 수 있다는 alert창이 뜬다.
확인을 누르니 아래 페이지로 이동했다.
여기서 끝난 줄 알았는데 아까 alert창에서 얻은 auth_key를 인증해보니 Game 06의 auth_key가 아니었다.
위 글에 적힌 것처럼 어떤 Key를 찾아야 할 거 같다.
해당 작성글에서는 어떤 것도 찾을 수 없어보여 개발자 도구를 열어봤다.
그랬더니 form태그 속성에 KEY_HINT가 숨겨져 있었다. "Rome's First Emperor" 로마의 첫 번째 황제가 힌트였다.
로마의 첫 황제는 아우구스투스(Augustus)이다.
'Study > Web Hacking' 카테고리의 다른 글
[suninatas] Game 08 (1) | 2022.05.24 |
---|---|
[suninatas] Game 07 (1) | 2022.05.16 |
[suninatas] Game 05 (1) | 2022.05.16 |
[suninatas] Game 04 (1) | 2022.05.10 |
[suninatas] Game 03 (1) | 2022.05.10 |