일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그리디 알고리즘
- Text
- misc
- MySQL
- Incognito
- 수학
- writeup
- SuNiNaTas
- 백준
- Database
- C
- Python
- xcz.kr
- php
- 인코그니토
- HackCTF
- wargame
- 정렬
- 문자열
- Web Hacking
- 사칙연산
- N0Named
- Forensics
- Web
- 구현
- 써니나타스
- cryptography
- Digital Forensics
- CTF
- Network
- Today
- Total
보안을 그리다, 훈이
[Web Hacking] HackCTF 보물(100p) Write Up 본문
이번에는 HackCTF의 Web Hacking 분야 보물 문제 풀이입니다.
이제 100포인트 문제네요.
문제 링크 접속.
페이지 숫자 중에 보물을 숨겨 두었다고 하네요.
일단 제시된 Page 1, Page 2, Page 3 버튼을 모두 눌러봅시다!
셋 다 128자의 각기 다른 값이 출력되었습니다.
Hash Type Identifier를 돌려보니 Hex, md5, SHA-512 등의 type이 나와서 Hex to String과 md5 Decode를 시도해봤지만 어떠한 단서도 얻지 못했습니다.
다시 처음으로 돌아가서, 페이지 숫자 중에 비밀이 있다는 문구에 초점을 맞춰, 페이지 숫자를 무작위로 넣어 접속해보니 버튼을 눌렀을 때 처럼 모두 각기 다른 128자의 알 수 없는 값들이 출력되었습니다.
보물을 찾기 위해 모든 페이지를 손수 둘러볼 필요도 없고 출제 의도에도 어긋나겠죠.
필자는 HTTP 요청을 보내는 모듈인 requests를 활용하여 파이썬으로 코드를 구현해보았습니다.
보물==플래그로 가정하고, 1 페이지부터 10000 페이지까지의 페이지 소스코드를 하나씩 받아와 플래그 포맷인 'HackCTF'가 포함되어 있으면 실행을 멈추고 페이지 번호를 출력하도록 했습니다.
import requests
url = 'http://ctf.j0n9hyun.xyz:2025/?page='
for i in range(1, 10001):
response = requests.get(url + str(i))
if 'HackCTF' in response.text:
print(i)
break
print('No flag on page ' + str(i))
또한, 진행 상황을 확인하기 위해 해당 페이지에 플래그가 없으면 'No flag on page [해당 페이지 번호]'를 출력하도록 했습니다.
출력 결과.
1225 페이지에 플래그 포맷이 있다고 하네요!
http://ctf.j0n9hyun.xyz:2025/?page=1225로 접속해봅니다.
Solve!
'Security > Wargame' 카테고리의 다른 글
[Forensics] HackCTF Question?(100p) Write Up (0) | 2021.12.10 |
---|---|
[Forensics] HackCTF Welcome_Forensics(50p) Write Up (0) | 2021.12.10 |
[Web Hacking] HackCTF Button(50p) Write Up (0) | 2021.12.09 |
[Web Hacking] HackCTF Hidden(50p) Write Up (0) | 2021.12.09 |
[Web Hacking] HackCTF /(50p) Write Up (0) | 2021.12.09 |