Information Security

[Lord Of Sql injection] assassin 본문

Web Hacking/Lord Of Sql injection 풀이

[Lord Of Sql injection] assassin

leeeeye321 2017. 12. 26. 21:49

[Lord Of Sql injection] assassin

쿼리의 결과로 id가 admin이어야 한다.

 

$query "select id from prob_assassin where pw like '{$_GET[pw]}'";

where 절에서 = 대신 like 절을 사용하여 패스워드를 확인하고 있다.

이를 이용하여 문제를 풀어야 할 것 같다.

 

https://www.w3schools.com/sql/sql_like.asp

llike 절은 컬럼에서 wildcard 문자를 사용하여 특정 문자열을 조회할 수 있다.

 

_를 사용하여 패스워드가 8글자인 것을 알아냈다.

 

if($result['id']) echo "<h2>Hello {$result[id]}</h2>"
if(
$result['id'] == 'admin'solve("assassin"); 

id가 admin이면 문제가 바로 풀리므로 guest와 admin의 패스워드를 겹치도록 설정해놓은 것 같다.

쿼리가 참이면 Hello guest가 출력된다.

 

패스워드가 숫자인지 문자인지 모르겠지만 숫자라고 가정하고 첫 번째 글자를 추측했다.

1% ~ 8%까지 조회한 결과 패스워드는 8로 시작하는 것을 알게 되었다.

 

그다음 같은 방법으로 두 번째 자리도 알아냈다.

 

세 번째 자리를 알아내던 중 문제가 풀렸다.

세번째 자리부터 guest와 admin의 패스워드가 겹치지 않는 것 같다.

Hello admin이 출력되면서 문제가 해결되었다.