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 |
Tags
- Digital Forensics
- Web
- 구현
- MySQL
- misc
- Text
- Web Hacking
- 문자열
- Database
- 사칙연산
- 백준
- Network
- Python
- SuNiNaTas
- xcz.kr
- HackCTF
- php
- wargame
- cryptography
- N0Named
- writeup
- 그리디 알고리즘
- 정렬
- C
- Incognito
- Forensics
- 써니나타스
- CTF
- 인코그니토
- 수학
Archives
- Today
- Total
보안을 그리다, 훈이
[Forensics] HackCTF 잔상(250p) Write Up 본문
HackCTF Forensics 분야 잔상(250p) 문제 풀이입니다.
먼저, 'compare.zip' 파일을 다운로드하고 압축을 해제합니다.
위와 같이 대성마이맥 수학 영역 대표강사 한석원님이 우아한 자태를 뽐내는 사진이 두 장이 나오네요.
왼쪽 사진은 'afterimage_1.jpeg', 오른쪽 사진은 'afterimage_2.jpeg'입니다.
사진상으로 보면 아무런 차이가 없어 보이고 binwalk를 돌려도 나오는게 없네요.
일단, 파일 이름이 'afterimage'인 것을 보아 jpeg 푸터 시그니처인 'FF D9' 뒤에 어떠한 단서들이 숨겨져 있을 것 같네요.
Hex Viewer로 까봅시다.
각각의 무수히 많은 값들을 일일이 비교하기에는 무리가 있어보여 jpeg 푸터 시그니처 이후의 hex 값을 각각 rtf 파일로 저장하고 python으로 코드를 구현했습니다.
a1 = list(map(''.join, zip(
*[iter(open('/HackCTF/Forensics/잔상/after_1.rtf', 'r').read().replace(' ', ''))]*2)))
a2 = list(map(''.join, zip(
*[iter(open('/HackCTF/Forensics/잔상/after_2.rtf', 'r').read().replace(' ', ''))]*2)))
res = ''
for i in range(len(a2)):
if a1[i] != a2[i]:
res += a2[i]
print(bytearray.fromhex(res).decode())
두 값을 비교하여 다른 값이 나오면 ASCII 형태로 변환하여 한 번에 출력하도록 구현했습니다.
실행 결과.
Flag가 깔끔하게 출력되었네요.
Solve!
'Security > Wargame' 카테고리의 다른 글
[Forensics] 써니나타스(SuNiNaTaS) 26번 문제 Write Up (0) | 2021.12.28 |
---|---|
[Forensics] 써니나타스(SuNiNaTaS) 28번 문제 풀이 (0) | 2021.12.27 |
[Cryptography] HackCTF Classic Cipher -3(200p) Write Up (0) | 2021.12.23 |
[Cryptography] HackCTF Classic Cipher -2(150p) Write Up (0) | 2021.12.22 |
[Forensics] H4CKING GAME CODE(150p) Write Up (0) | 2021.12.19 |
Comments