Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

White Security

[wargame.kr] md5_compare 문제풀이 본문

Wargame Writeups/wargame.kr

[wargame.kr] md5_compare 문제풀이

POSIX 2019. 1. 22. 08:03

wargame.kr 사이트의 10번째 문제입니다.



그저 비교하세요. 서로 다른 값을 :D



링크에 접속하니 두개의 입력칸이 있습니다.

그리고 하단의 view-source 링크를 통해 php 소스를 확인할 수 있습니다. 


먼저 소스를 확인해보겠습니다.



브루트포스 방지를 위해 sleep(3) 구문를 끼워넣었군요.

첫번째 값은 알파벳으로, 두번째 값은 숫자로 이루어져야 하며

md5 해싱을 한 후에 == 비교를 하여 값이 같다고 여겨져야 합니다.



php에는 두개의 비교 연산자가 존재합니다.

느슨한 비교인 ==, 엄격한 비교인 === 가 그것인데요.


자료형까지 고려하여 완벽하게 같지 않으면 탈락시키는 ===와는 다르게

==는 의도와 다르게 통과시키는 경우가 더러 있습니다.


이번 문제의 경우에도 적용되는 부분이 있는데요.

바로 0e123456... 타입의 문자열을 비교할 때 나타나는 취약점입니다.


예로 0e123456789... 등의 문자열을 비교인자로 넣게 되면

모두 같은 0으로 취급되어 ==는 true를 리턴하게 됩니다.




따라서 잘 알려진 md5값인 240610708과 QNKCDZO를

폼에 입력하면 문제의 조건을 만족하게 되겠네요.



Flag를 얻는데에 성공했습니다.

Comments