JeonYoungSin
2018. 1. 17. 15:22
webhacking.kr 51번 문제다.
점수는 250point.
흠 관리자로 들어가면 될 것 같다. 인젝션 문젠가?
소스있길래 확인해보니 md5($_POST[pw],true)가 눈에 띈다. 이거 예전에 wargame.kr에서 봤던 건데 출력값을 16진수가아니고 바이너리로 해줘서 '='가 포함된 출력값을 뱉는 애를 찾아주면 된다.
MySQL에서 WHERE 조건절에 pw='ABCD'='EFGH' 이와 같이 비교를 두 번하면 마지막에 있는 값은 앞에 있는 값이 참이냐 거짓이냐를 비교한다. 예를들면 select id from challenge_51_admin where id='$input_id' and pw='$input_pw' id는 admin을 입력하고 pw에는 ABCD'='EFGH 를 입력하면 결과는 다음과 같다. select id from challenge_51_admin where id='admin' and pw='ABCD'='EFGH' select id from challenge_51_admin where id='admin' and pw='ABCD'='EFGH' pw가 ABCD는 거짓이다. select id from challenge_51_admin where id='admin' and 거짓='EFGH' EFGH는 문자이기 때문에 거짓과 같은 의미를 가진다. select id from challenge_51_admin where id='admin' and 거짓=거짓 따라서, 거짓=거짓은 참이기 때문에 참인 조건이 된다.
그럼이제 '='뱉는 애만 찾아내면 될 것 같다.코드짜서 돌려봤다.
|