wargame.kr 8번 md5_compare 라는 문제다.
 
점수는 500point!
 
흠.. 일단 비교해보라고? 알았다. 어디한번 시작해보자.



흠...소스부터 확인을해보자.


흠.. 플래그 값을 얻으려면 chk라는 변수가 true로 유지되어야 하는 것 같다.

유지조건을 살펴보니

첫번째로는 ctype_alpha 함수를 통해 v1에 알파벳 외의 다른 문자가 있으면 안된다.

두번째로는 is_numeric 함수를 통해 v2에 숫자 외의 다른 문자가 있으면 안된다.

마지막으로 md5로 출력한 hash 값이 서로 같아야 한단다.

서로 다른 값을 md5로 돌려서 같아야 된다고..? 아무리 해쉬충돌이 발생할 수 있다지만

그걸 찾아내라는 것도 아닌거 같고 찾고 싶지도 않다.

뭔가 취약점이 있을거 같다.

그럼 그렇지. 찾아보니 php magic hash 취약점이라는게 존재한다.

0e로 시작하는 문자열을 비교하면 typecast가 적용이 되어서 우선순위가 더 높은 float형으로 비교가

되어 둘다 0이 된다는 뜻이다.

즉, md5를 통해 출력된 해쉬 값이 "0e어쩌고"=="0e어쩌고" 형식이되면 0=0으로 바뀌어 비교가 되어

결과가 true가 되게 된다.

오호라...신기하구만...

그러면 해쉬 값이 0e가 나오는 문자열만 찾으면 될 것 같다.

aabg7XSs    aabC9RqS    240610708    QNKCDZO

대충 찾아보니 이렇게 4개 정도를 찾았다.

저중에서 v1은 알파벳만이어야하니까 QNKCDZO를 쓰고 v2는 숫자만이니까 240610708을 써보자.


잘 나온다. 성공!

뭔가 풀면서 새로 알게된 점이 많았던 문제였다.  


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

wargame.kr EASY_Crackme  (0) 2018.01.04
wargame.kr md5 password  (0) 2018.01.04
wargame.kr fly me to the moon  (0) 2018.01.04
wargame.kr DB is really GOOD  (0) 2018.01.04
wargame.kr wtf_code  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,