문제 설명을 보면 비교를 하는데 다른 값으로 해야 한다는 것 같다. 

문제 페이지를 보면 두 개의 값을 입력받는다. 

소스 코드를 확인해 보면 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

+ Recent posts