wargame.kr md5_compare write up
2018. 4. 23. 15:52
해당 문제에 접속해보면 소스를 제공해준다. 소스를 한 번 보자.
알파벳으로만 이루어진 v1 값을 받고, digits로만 된 v2 값을 받고 loose compare 방식으로 두 값을 md5 해시화한 값을 비교한다.
PHP의 loose compare 는 굉장히 위험한 코드 중 하나라고 평가받고 있다. 왜냐하면 다음과 같은 현상이 발생하기 때문.
md5의 공역은 16진수로된 문자열이다. 따라서 앞에 0e~~ 로 시작하는 정의역을 찾는다면, 우리는 loose compare를 통해서 해당 분기문을 우회할 수 있다.
Loose compare는 외국의 여러 해커들이 찾아놓았다. (https://news.ycombinator.com/item?id=9484757)
$ echo -n 240610708 | md5sum
0e462097431906509019562988736854 -
$ echo -n QNKCDZO | md5sum
0e830400451993494058024219903391 -
$ echo -n aabg7XSs | md5sum
0e087386482136013740957780965295 -
따라서 다음과 같은 값을 전달해준다면 Flag를 얻을 수 있다.
http://wargame.kr:8080/md5_compare/?v1=QNKCDZO&v2=240610708
flag : f6330ca82a72179beae8b20a2ab7f0cbcc36ccc5
'write-ups > wargame.kr' 카테고리의 다른 글
wargame.kr QR CODE PUZZLE write-up (0) | 2020.03.17 |
---|---|
wargame.kr md5 password write up (0) | 2018.04.23 |
wargame.kr jff3_magic write up (0) | 2018.01.08 |
wargame.kr img recovery write up (0) | 2017.10.04 |
wargame.kr zairo write up (0) | 2017.06.22 |