바로 View Source를 통해서 확인해보자.

 

소스보기를 통하니 "240610708"을 md5로 암호화한 값과 입력값을 sha1으로 암호화한 값이 일치하면 flag 값을 반환한다는 것을 알 수 있었다.

"240610708"을 md5로 암호화 하면 "0e462097431906509019562988736854"로 암호화 된 값을 확인할 수 있었다.

그러면 어떻게 md5와 sha1의 암호화한 동일한 값을 찾을 수 있을까? 바로 PHP Magic Hash라는 것을 찾아보면 알 수 있다.

 

php magic hash 라는 것에 대해 간단히 설명하면

<?php

$a = 0e1234;
$b = 0e1111;

?>

이렇게 두가지 변수가 선언되어 있다고 하면 $a == $b라하면 동일하다고 판단된다.

왜냐하면 e를 지수로 판단한다 즉, $a가 0*e1234 = 0이라 판단되고, $b도 마찬가지로 0이라 판단되며 동일하다고 판단된다.

그렇기 때문에 md5("240601708") == sha1("10932435112")가 같게 되므로 flag 값을 얻을 수 있다.


참조

https://ch4njun.tistory.com/66

 

[Concept] PHP Magic Hash 취약점

PHP에서 Magic Hash란 사실 취약점이라기보다 특수동작이다. A == B 를 비교하면 두개의 자료형이 달라도 데이터만 일치하다면 TRUE를 반환한다. ( 이를 방지하기 위해서는 A === B 를 사용하면 된다. )

ch4njun.tistory.com

 

'워게임 > HackCTF' 카테고리의 다른 글

[HackCTF] Web - LOL 풀이  (0) 2021.08.15
[HackCTF] Web - Cookie 풀이  (0) 2021.08.14
[HackCTF] Web - Login 풀이  (0) 2021.08.06
[HackCTF] Web - Guess me 풀이  (0) 2021.08.01
[HackCTF] Web - 보물 풀이  (0) 2021.07.24
복사했습니다!