CTF/포렌식

[UMDCTF] Sensitive - 포렌식 / PDF / Python

SecurityMan 2022. 5. 12. 11:00


포렌식 문제

특별한 설명 없이 sensitive 라는 바이너리 파일 하나만 주어진다.

반응형


문제 파일인 sensitive 파일이다.

확장자도 없는 그냥 바이너리 파일같아 보이는데


HxD 프로그램으로 열어보면 PDF 파일인걸 바로 알 수 있다.

자세히보면 보통 PDF 파일과 조금 달라 보이는데

파일을 구성하는 모든 문자열 사이에 스페이스(\x20)가 들어가 있는걸 볼 수 있다.


참고로 일반적인 PDF 파일은 이렇게 생겼다.

여기서 모든 문자 사이에 스페이스바를 눌러 넣은 것이다.

이런 문제는 아주 간단하게 PDF 파일을 열어서 눌러진 스페이스바를 다 없애주면 된다.

f1 = open('sensitive', 'rb')

read = f1.read()[::2]

f2 = open('output.pdf', 'wb')
f2.write(read)
f2.close()


파이썬을 이용해 위처럼 아주 간단하게 작업할 수 있다.

f1 변수를 선언해 sensitive를 바이너리 모드로 읽고(rb)

f1.read()[::2] 를 이용해 스페이스바를 모두 지워준다.

참고로 [a:b:c] 의 의미는 a부터 b까지 c간격으로 라는 의미이다.

[::2] 이렇게 쓰면 처음부터 끝까지 2칸이라는 의미가 되어서 글자 사이사이에 있던 \x20이 모두 지워지는 것이다.

f2 변수에는 작업한 내용을 바이너리 모드로 써서(wb) output.pdf에 저장하도록 만들었다.


파이썬 코드를 실행하면 이렇게 PDF 파일이 하나 생성이 된다.


PDF 파일을 열어보면 이런 내용이 있는데

빨간 네모 안쪽을 보면 연하게 QR코드가 있는걸 볼 수 있다.


이미지 편집 프로그램을 이용해서 해당 QR코드를 진하게 만들어 준 뒤

스마트폰 카메라로 찍어보면 플래그를 얻을 수 있다.

반응형