첫 화면이다. 문제에서 어떤 계정이든 로그인하라고 한다.
로그인 폼이 보이는데, Form SQL Injection을 할 수 있을 것이다.
어떤 DBMS를 사용하는지 아직 모르므로, MySQL 버전의 공격을 실시한다.
Username: ' or 1=1#
Password: [아무거나]
이렇게 주면, SELECT [column] FROM [table] WHERE username = '' or 1=1#' AND password=[입력값]' 쿼리가 완성되는데,
MySQL에선 #이 주석문이라 Password 쪽은 확인하지 않으며, 항상 참인 1=1과 or 연산하여 username이 무엇이든 로그인시킬 수 있다.
DBMS가 MySQL이 아니라면 Syntax Error가 표시될 것이다.
작성된 쿼리를 그대로 보여준다!
Syntax Error가 표시되었으므로, Oracle이나 MSSQL 버전의 주석인 --으로 대체해 넣어본다.
위와 마찬가지 원리로, Password에 대한 조건절이 무시되면서 성공한 것을 볼 수 있다.
'[Wargame Write-up] > HackThis!!' 카테고리의 다른 글
[HackThis!!] [MAIN] LEVEL 4 (0) | 2016.12.17 |
---|---|
[HackThis!!] [MAIN] LEVEL 3 (0) | 2016.12.17 |
[HackThis!!] [MAIN] LEVEL 2 (0) | 2016.12.17 |
[HackThis!!] [MAIN] LEVEL 1 (0) | 2016.12.17 |
[HackThis!!] [SQLi] LEVEL 2 (0) | 2016.09.13 |