본문 바로가기

[Wargame Write-up]/HackThis!!

[HackThis!!] [SQLi] LEVEL 1

첫 화면이다. 문제에서 어떤 계정이든 로그인하라고 한다. 

 

로그인 폼이 보이는데, 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