Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HackCTF
- misc
- Database
- Incognito
- Python
- 백준
- 그리디 알고리즘
- Network
- xcz.kr
- 써니나타스
- Text
- 구현
- N0Named
- 정렬
- php
- writeup
- 문자열
- Web Hacking
- 수학
- cryptography
- CTF
- MySQL
- Forensics
- 인코그니토
- Digital Forensics
- C
- 사칙연산
- SuNiNaTas
- Web
- wargame
Archives
- Today
- Total
보안을 그리다, 훈이
[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
[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를 찾아봅시다.
Hash Type | Magic Number / String | Magic Hash |
md5 | 240610708 | 0e462097431906509019562988736854 |
sha1 | 10932435112 | 0e07766915004133176347055865026311692244 |
찾아보니 sha1의 Magic Number는 '10932435112'라고 하네요.
텍스트폼에 알맞게 입력하고 제출하면 flag가 출력됩니다!
Solve!
'Security > Wargame' 카테고리의 다른 글
[Forensics] N0Named Wargame 회사 찾기(50p) Write Up (0) | 2022.01.17 |
---|---|
[Forensics] N0Named Wargame MagicIMAGE(5p) Write Up (0) | 2022.01.16 |
[Forensics] 써니나타스(SuNiNaTaS) 26번 문제 Write Up (0) | 2021.12.28 |
[Forensics] 써니나타스(SuNiNaTaS) 28번 문제 풀이 (0) | 2021.12.27 |
[Forensics] HackCTF 잔상(250p) Write Up (0) | 2021.12.24 |
Comments