-
HackCTF Web 여덟번째 문제 마법봉 100p 문제를 클릭하여 해당 url로 접속해보자.
해당 url로 이동하면 "해쉬에 마법을 부여하면 그 어떤 것도 뚫릴지어니..."라는 문구와 입력폼, 제출 버튼, View Source 버튼, 이상한 사진 하나를 확인할 수 있다.
View Source 버튼 버튼을 눌러 소스를 확인해보자.
<?php show_source(__FILE__); $flag = "if_you_solved"; $input = $_GET['flag']; if(md5("240610708") == sha1($input)){ echo $flag; } else{ echo "Nah..."; } ?> Nah...
소스를 보면 md5로 암호화한 해시와 입력한 값이 SHA1으로 암호화 됐을때 같으면 플래그가 출력된다고 한다.
다시 돌아가서 첫 화면에서의 "해쉬에 마법을 부여하면 그 어떤 것도 뚫릴지어니..." 라는 문구에 주목해보자.
이 문구를 통해 이 문제가 PHP에 존재하는 Magic Hash 취약점에 대한 문제임을 유추할 수 있다.
PHP Magic Hash 취약점은 PHP에서 == 을 통해 비교 시 생기는 타입 형 변환에 의한 취약점이다.
0e로 시작되고 뒤에 있는 값들이 모두 숫자라면, string 형태이지만 비교 연산시에 float로 형 변환이 되기 때문에 문제가 발생한다.
비교하는 대상도 0e로 시작되는 값이라면 두 값이 모두 exponent (멱지수)로 바뀌어 0이라는 값을 갖게 되므로 연산이 참이 된다.
따라서 SHA1 으로 되는 값이 0e로 시작되면 되기 때문에 아래의 사이트에 있는 10932435112 라는 숫자를 이용하면 된다.
Magic Hashes
For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator.
www.whitehatsec.com
입력 칸에 10932435112를 입력하여 제출하면 아래와 같이 Flag를 획득할 수 있다.
Flag : HackCTF{magic_makes_everything_possible}
HackCTF
Do you wanna be a God? If so, Challenge!
ctf.j0n9hyun.xyz
'Wargame > HackCTF' 카테고리의 다른 글
[Web] HackCTF Input Check (0) 2022.03.24 [Web] HackCTF Time (0) 2022.03.23 [Web] HackCTF Login (0) 2022.02.10 [Web] HackCTF Read File (0) 2022.02.09 [Web] HackCTF Guess me (0) 2022.02.09 댓글 0