보안을 그리다, 훈이

[Web Hacking] HackCTF 마법봉(100p) Write Up 본문

Security/Wargame

[Web Hacking] HackCTF 마법봉(100p) Write Up

HooNeee 2021. 12. 28. 21:02

 

HackCTF Web 분야 마법봉(100p) 문제 풀이입니다.

 

[HackCTF] Challenge 마법봉

 

제시된 링크로 접속해봅시다.

 

http://ctf.j0n9hyun.xyz:2029

 

해쉬에 마법을 부여하면 뚫린다고 아주 친절하게 명시해 주었네요.

 

이는 PHP에 존재하는 Hash Magic Vulnerability에 대한 문제임을 유추할 수 있습니다.

 

PHP Magic Hash Vulnerability는 PHP에서 == 연산자로 비교 시, 문자열의 형식이 ^0+e\d*$로 되어있을 때 이를 숫자형 데이터와 비교하게 되면 0으로 인식하게 되는 현상을 이용한 것인데 0의 n제곱은 항상 0이기 때문에 취약점이 발생하게 됩니다.

 


 

이전에 풀었던 인코그니토 문제와 같은 유형이네요!

 

자세한 풀이는 아래 링크를 참조하면 좋을 것 같습니다 :)

 

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

 

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

[Web] Do you know Hashes 해시 좀 쳐보셨나요? http://3.37.81.93:20929/ 링크에 접속하면 다음과 같은 페이지가 나타난다. PHP 코드로 작성되어 있는데, $keys[1]의 md5 hash와 $keys[2]의 crc32 hash가 일치해..

hooneee.tistory.com

 


 

[View Source] 버튼을 통해 PHP 소스코드를 봅시다.

 

<?php
show_source(__FILE__);
$flag = "if_you_solved";
$input = $_GET['flag'];
if(md5("240610708") == sha1($input)){
    echo $flag;
}
else{
    echo "Nah...";
}
?>

 

'240610708'의 md5 hash와 '$input'의 sha1 hash가 일치하면 flag를 뱉도록 구현되어 있네요.

 

sha1의 Magic Number를 찾아봅시다.

 

 

Magic Hashes

For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator.

www.whitehatsec.com

 

Hash Type Magic Number / String Magic Hash
md5 240610708 0e462097431906509019562988736854
sha1 10932435112 0e07766915004133176347055865026311692244

 

찾아보니 sha1의 Magic Number는 '10932435112'라고 하네요.

 

텍스트폼에 알맞게 입력하고 제출하면 flag가 출력됩니다!

 

Solve!

 

Comments