반응형
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
- DOS
- multimedia
- ctf-d
- CSV Injection
- Stored Cross-Site Scripting
- Wordpress
- zip 파일 구조
- 스테가노그래피
- scapy
- steghide
- strcmp 취약점
- LifterLMS
- Python
- 네트워크
- reversing
- wargame.kr
- CVE
- 암호학
- 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드
- 포렌식
- QR코드
- union sql injection
- Whitespace Programming
- Import/Export Wordpress Users
- forensic
- 보고서
- volvolatility
- zap 파일
- 취약점 진단
- xcz
Archives
- Today
- Total
광팔이 보안이야기
[CTF-d](Multimedia) d4rth는 더러운 방법을... (140) 본문
반응형
파일을 다운로드하면 두 개의 파일 original.png / encrypted.png 이미지 파일 두 개를 얻을 수 있다.
일단 파일 이름을 보면 기본 / 암호화 이다.
파일은 같은 이미지이며 크기가 1KB 정도의 차이를 보이고 있다.
이제 이미지를 비교해주는 Diffimg 툴을 이용해보자.
왼쪽 위가 조금 다르다는 것을 알 수 있으며 가로 49 / 세로 7의 크기이다.
49x7 작은 네모 안에도 서로 같은 부분이 있고 다른 부분이 있다는 점을 알 수 있다.(자세히 보면 아주 작아 1 픽셀 정도의 크기인 것을 알 수 있다.)
이제 픽셀을 문자로 바꾸기 위해 코드로 바꿔보자.(서로 다른 부분은(노랑) 1 / 서로 같은 부분은(검정) 0)
from PIL import Image
img1 = Image.open("original.png")
img2 = Image.open("encrypted.png")
str = ''
for x in range(49):
data = ''
for y in range(7):
p_img1 = img1.getpixel((x, y))
p_img2 = img2.getpixel((x, y))
if p_img1 == p_img2:
data += '0'
else:
data += '1'
str += chr(int(data,2))
print(str)
코드는 간단하니 생략한다.
SHA256으로 바꿔주면 플래그를 얻을 수 있다.
플래그 값 : bdfa42fd05bfa808e9bcb63786ed3983353ac7f6874c37046722ab5944c79f0d
반응형
'Wargame > CTF-d' 카테고리의 다른 글
[CTF-d](Multimedia) broken (140) (0) | 2021.02.16 |
---|---|
[CTF-d](Multimedia) Find Key(Image) (140) (0) | 2021.02.16 |
[CTF-d](Multimedia) Find Key(Hash)(120) (0) | 2021.02.16 |
[CTF-d](Multimedia) 답을 찾기 위해 돋보기를 써라! (120) (0) | 2021.02.16 |
[CTF-d](Multimedia) Find Key(Movie) (120) (0) | 2021.02.16 |
Comments