[Web Hacking] HackCTF 마법봉(100p) Write Up
HackCTF Web 분야 마법봉(100p) 문제 풀이입니다.
제시된 링크로 접속해봅시다.
해쉬에 마법을 부여하면 뚫린다고 아주 친절하게 명시해 주었네요.
이는 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!