문제 설명을 보면 비교를 하는데 다른 값으로 해야 한다는 것 같다.
문제 페이지를 보면 두 개의 값을 입력받는다.
소스 코드를 확인해 보면 v1과 v2의 md5 값이 같으면 문제를 해결할 수 있는데
ctype_alpha() 함수로 v1이 알파벳인지 검사하고, is_numeric() 함수로 v2가 숫자인지 검사한다.
php md5 비교에서 두 md5 해시값의 앞부분이 0e로 같은 값을 가지면 참을 반환하는 취약점이 있다.
이러한 값을 가지는 알파벳과 숫자는 QQNKCDZO 와 240610708 가 있다.
이러한 취약점을 막기 위해서는 === 연산자를 사용하는 방법이 있다.
알파벳 값을 v1(첫번째)에 넣고 숫자 값을 v2(두번째)에 넣으면 flag를 얻을 수 있다.
알게된 점 : php md5함수에서 비교 취약점과 보안방안, php ctype_alpha()함수, is_numeric() 함수
'Security & Hacking > Wargame' 카테고리의 다른 글
[Wargame.kr] type confusion (0) | 2019.09.10 |
---|---|
[Wargame.kr] tmitter (0) | 2019.09.07 |
[Wargame.kr] strcmp (0) | 2019.09.02 |
[Wargame.kr] DB is really GOOD (0) | 2019.09.02 |
[Wargame.kr] md5 password (0) | 2019.08.29 |