White Security
[wargame.kr] md5_compare 문제풀이 본문
wargame.kr 사이트의 10번째 문제입니다.
그저 비교하세요. 서로 다른 값을 :D
링크에 접속하니 두개의 입력칸이 있습니다.
그리고 하단의 view-source 링크를 통해 php 소스를 확인할 수 있습니다.
먼저 소스를 확인해보겠습니다.
브루트포스 방지를 위해 sleep(3) 구문를 끼워넣었군요.
첫번째 값은 알파벳으로, 두번째 값은 숫자로 이루어져야 하며
md5 해싱을 한 후에 == 비교를 하여 값이 같다고 여겨져야 합니다.
php에는 두개의 비교 연산자가 존재합니다.
느슨한 비교인 ==, 엄격한 비교인 === 가 그것인데요.
자료형까지 고려하여 완벽하게 같지 않으면 탈락시키는 ===와는 다르게
==는 의도와 다르게 통과시키는 경우가 더러 있습니다.
이번 문제의 경우에도 적용되는 부분이 있는데요.
바로 0e123456... 타입의 문자열을 비교할 때 나타나는 취약점입니다.
예로 0e123456789... 등의 문자열을 비교인자로 넣게 되면
모두 같은 0으로 취급되어 ==는 true를 리턴하게 됩니다.
따라서 잘 알려진 md5값인 240610708과 QNKCDZO를
폼에 입력하면 문제의 조건을 만족하게 되겠네요.
Flag를 얻는데에 성공했습니다.
'Wargame Writeups > wargame.kr' 카테고리의 다른 글
[wargame.kr] type confusion 문제풀이 (0) | 2019.01.22 |
---|---|
[wargame.kr] tmitter 문제풀이 (1) | 2019.01.22 |
[wargame.kr] strcmp 문제풀이 (0) | 2019.01.22 |
[wargame.kr] DB is really GOOD 문제풀이 (0) | 2019.01.22 |
[wargame.kr] md5 password 문제풀이 (0) | 2019.01.20 |
Comments