Webhaking.kr 51- md5 and SQL Injection
http://hyunmini.tistory.com/43
이 블로그를 보고 문제를 풀게되었습니다.
$input_pw=md5($_POST[pw],true);
이렇게 true가 들어가게 되면 바이너리 형식으로 출력이 되어 "=" 구문이 나오는 것을 찾게되면 sql 인젝션 공격이 가능해진다.
몰랐던 개념이라 정리!!
9235566 문자열은 "=" 을반환!!!
python으로 md5 해시하는 방법은 다른 블로그에 많이 나와있음
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 거짓=거짓
따라서, 거짓=거짓은 참이기 때문에 참인 조건이 된다.
select id from challenge_51_admin where id='admin' and 참
결국, id가 admin인 조건이 되기 때문에 문제를 우회하여 풀 수 있다.
<후에> 2016-11-23
웹 공부를 다시 천천히 하면서
세 개의 다른 문자를 비교하면 참이 반환된다는 점을 배우게 되었습니다.
• ‘a’ = ‘b’ = ‘c’ 은 참이 되고 1 반환됩니다.
문제를 풀고 항상 다른사람은 어떻게 풀었나 블로그를 돌아다니는데 정리가 잘된 블로그가 있어서 URL을 첨부하겠습니다.
http://blog.do9.kr/entry/Challenge-51
0 개의 댓글