[2021 INCOGNITO CTF writeup] Web - Do you know Hashes

[2021 INCOGNITO CTF writeup] Web - Do you know Hashes

728x90

[Web] Do you know Hashes

해시 좀 쳐보셨나요?

http://3.37.81.93:20929/

링크에 접속하면 다음과 같은 페이지가 나타난다.

PHP 코드로 작성되어 있는데,

$keys[1]의 md5 hash와 $keys[2]의 crc32 hash가 일치해야 하고 $keys[2]의 crc32 hash와 $keys[3]의 md4 hash가 일치해야 하며 $keys[1]의 md5 hash와 $keys[3]의 md4 hash가 서로 일치하게 되면 {flag}를 alert 창으로 띄워준다고 한다.

따라서 이는 PHP magic hash에 대한 문제인 것을 알 수 있다.

PHP magic hash는 PHP에서 == 연산자로 비교 시, 문자열의 형식이 ^0+e\d*$로 되어있을 때 이를 숫자형 데이터와 비교하게 되면 0으로 인식하게 되는 현상을 이용한 것인데 0의 n제곱은 항상 0이기 때문에 이러한 현상이 나타나게 된다.

Hash Type Magic Number String Magic Hash md5 240610708 0e462097431906509019562988736854 crc32 2332 0e684322 md4 48291204 0e266546927425668450445617970135

Magic Number String을 차례대로 넣어봤다.

Run Code로 코드를 돌리자마자 플래그가 튀어나왔다.

저 Magic Number String을 사용하지 않아도 가능한 방법은 많은데, 아래 사이트에 작성되어 있는 Magic hash라면 다 가능하다.

alert('[Verified Success]\

Congrats! {flag}');"; }else fail(); }else fail(); }else fail(); function fail() { echo "alert('Failed to verify!');"; } ?>

따라서 이런것도 가능.

끝.

flag : INCO{L0L_YoU_H1t_Ha5hes_50_MuCH!!}

728x90

from http://hooneee.tistory.com/354 by ccl(A) rewrite - 2021-09-12 19:00:56