본문 바로가기

HackCTF 풀이/Web

HackCTF - Web - 마법봉 풀이

문제에 들어가니 초~중학교때 자주봤던 마법봉 짤과 함께 뭔가를 입력할 수 있는 폼이 기다린다.

 

이 문제에도 친절하게 코드를 확인할 수 있도록 버튼을 마련해 두었다.

위 문제의 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
<?php
    show_source(__FILE__);
    $flag = "if_you_solved";
    $input = $_GET['flag'];
    if(md5("240610708"== sha1($input)){
        echo $flag;
    }
    else{
        echo "Nah...";
    }
?>
cs

md5로 240610708을 암호화한 해시와 SHA1으로 입력값을 암호화한 해시한 값이 같으면 플래그가 출력된다고 한다.

 

이 때 추측이 가능하다.

해시가 같다고 비교되는 경우는 단 하나, Magic hash이기 때문이다.

Magic hash : https://www.whitehatsec.com/blog/magic-hashes/

 

Magic Hashes | WhiteHat Security

For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator. It’s caused a lot of issues. This has a particular implication for password hashes. Password hashes in PHP are base16 encoded and can come in the form

www.whitehatsec.com

위의 사이트에서 얻은 값은 10932435112이다.

 

따라서 우리는 input에 10932435112을 넣고 제출해보자.

 

플래그가 출력된다.

 

 

여담으로, 문제 다 풀고 알았는데 위에 써있는 "해쉬에 마법을 부여하면 그 어떤 것도 뚫릴지어니..."가 정말 큰 힌트였다.

'HackCTF 풀이 > Web' 카테고리의 다른 글

HackCTF - Web - Home 풀이  (0) 2019.09.17
HackCTF - Web - Input Check 풀이  (0) 2019.06.09
HackCTF - Web - Login 풀이  (0) 2019.06.09
HackCTF - Web - Read File 풀이  (0) 2019.06.09
HackCTF - Web - 보물 풀이  (0) 2019.06.09