get으로 받은 pw가 admin의 패스워드와 일치하면 id에서 $result와 'admin'이 같으면 조건문을 충족하게 되고 문제가 풀리게 된다.

그렇지만 패스워드가 몇글자인지 알기위해 임의의 문자를 나타내는 _을 사용하여 pw의 길이를 알아보고 sql에서의 와일드카드인 %를 문자열의 앞과 뒤 중간에 적절히 넣어서 pw를 추측해가며 문제를 풀어준다.


pw에 %(와일드카드)만 넣었을때 Hello guest라고 뜨는 걸로보아 admin이 guest보다 하위 레코드에 위치하는 것 같다. 처음부터 admin으로 떠버리면 문제가 너무 쉽게 풀리기 때문




_ (임의의 문자를 의미) <--문자를 8번 입력해 주었을때 hello guest가 떴다. 패스워드가 8자리라는 것을 알 수 있다.



admin의 패스워드를 찾기 위해 뒷자리부터 차근차근 문자를 넣어봤는데 Hello guest만 나오지 admin은 나오지 않았다. 이를 통해 admin과 guest의 패스워드가 일부 겹친다는 것을 알 수 있다. 


패스워드의 앞 두자리 8과 3역시 guest와 admin의 패스워드가 겹치는 것을  알 수 있었고..




세번째 자리에서 패스워드가 갈려 admin은 패스워드 앞 세자리가 832로 시작하고 guest는 83d로 셋째 자리에서 나뉘게 된다.





'Web Hacking > Lord of SQL injection' 카테고리의 다른 글

16.los succubus  (0) 2018.03.28
15.los zombie_assassin  (0) 2018.03.27
13.los bugbear  (0) 2018.03.22
12.los darkknight  (0) 2018.03.22
11.los golem  (0) 2018.03.22

+ Recent posts