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
- Forensics
- 정렬
- CTF
- cryptography
- C
- N0Named
- Incognito
- Digital Forensics
- 사칙연산
- xcz.kr
- wargame
- 써니나타스
- MySQL
- 인코그니토
- 그리디 알고리즘
- Web Hacking
- php
- writeup
- Database
- Python
- Web
- 백준
- 구현
- Text
- 문자열
- 수학
- Network
- SuNiNaTas
- misc
Archives
- Today
- Total
보안을 그리다, 훈이
[2021 INCOGNITO CTF] Web - Do you know Hashes Write Up 본문
Capture The Flag/CTF 풀이
[2021 INCOGNITO CTF] Web - Do you know Hashes Write Up
HooNeee 2021. 9. 12. 18:37[Web] Do you know Hashes
해시 좀 쳐보셨나요?
http://3.37.81.93:20929/
링크에 접속하면 다음과 같은 페이지가 나타난다.
PHP 코드로 작성되어 있는데,
$keys[1]의 md5 hash와 $keys[2]의 crc32 hash가 일치해야 하고 $keys[2]의 crc32 hash와 $keys[3]의 md4 hash가 일치해야 하며 $keys[1]의 md5 hash와 $keys[3]의 md4 hash가 서로 일치하게 되면 {flag}를 alert 창으로 띄워준다고 한다.
따라서 이는 PHP magic hash에 대한 문제인 것을 알 수 있다.
PHP magic hash는 PHP에서 == 연산자로 비교 시, 문자열의 형식이 ^0+e\d*$로 되어있을 때 이를 숫자형 데이터와 비교하게 되면 0으로 인식하게 되는 현상을 이용한 것인데 0의 n제곱은 항상 0이기 때문에 이러한 현상이 나타나게 된다.
Hash Type | Magic Number / String | Magic Hash |
md5 | 240610708 | 0e462097431906509019562988736854 |
crc32 | 2332 | 0e684322 |
md4 | 48291204 | 0e266546927425668450445617970135 |
Magic Number를 차례대로 넣어봤다.
Run Code로 코드를 돌리자마자 플래그가 튀어나왔다.
저 Magic Number String을 사용하지 않아도 가능한 방법은 많은데, 아래 사이트에 작성되어 있는 Magic hash라면 다 가능하다.
<?php
$keys = [
NULL,
"QLTHNDT",
"HFS_uPqtIQPl",
"gH0nAdHk"
];
if(hash('md5', $keys[1]) == hash('crc32', $keys[2])){
if(hash('crc32', $keys[2]) == hash('md4', $keys[3])){
if(hash('md5', $keys[1]) == hash('md4', $keys[3])){
echo "<script>alert('[Verified Success]\\nCongrats! {flag}');</script>";
}else fail();
}else fail();
}else fail();
function fail() {
echo "<script>alert('Failed to verify!');</script>";
}
?>
따라서 이런것도 가능.
끝.
flag : INCO{L0L_YoU_H1t_Ha5hes_50_MuCH!!}
'Capture The Flag > CTF 풀이' 카테고리의 다른 글
[2021 INCOGNITO CTF] Forensics - SWUCTFINCO Write Up (0) | 2021.09.12 |
---|---|
[2021 INCOGNITO CTF] Forensics - TwinCle Write Up (0) | 2021.09.12 |
[2021 INCOGNITO CTF] MISC - hex carving Write Up (0) | 2021.09.11 |
[2021 INCOGNITO CTF] MISC - EZ_steganography Write Up (0) | 2021.09.11 |
[2021 INCOGNITO CTF] Sanity - Sanity Check Write Up (0) | 2021.09.11 |
Comments