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 거짓=거짓
따라서, 거짓=거짓은 참이기 때문에 참인 조건이 된다.

그럼이제 '='뱉는 애만 찾아내면 될 것 같다.코드짜서 돌려봤다.

11616635 비번주고 실행해봤다.

Clear!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 53번  (0) 2018.01.18
webhacking.kr 52번  (0) 2018.01.18
webhacking.kr 50번  (0) 2018.01.17
webhacking.kr 49번  (0) 2018.01.17
webhacking.kr 48번  (0) 2018.01.17
블로그 이미지

JeonYoungSin

메모 기록용 공간

,