CTF | wargame

suninatas / 31번 PDF Analysis (숨겨진 데이터 찾기, pdf 데이터 파싱)

nopdata 2017. 4. 10. 05:38

pdf 분석 문제이다. pdfdot은 여전히 막혀서 사용할 수 없었고, 인터넷을 검색해보니 유사한 형태로 보여주는 소스코드와 설명이 있는 블로그 발견.

위 코드 중 pdf-parser.py를 통해 obj를 확인해 보았다. 옵션 중 -c옵션을 추가해주면 해당 obj의 데이터도 뽑아낼 수 있다.

[ pdf obj 일부 ]

pdf 중 일부인데 보면 javascript 형태로 되어있다. 하지만 36번 obj는 링크가 되어있지 않으므로 당연히 pdf를 열었을때 보일리가 없다.
이 데이터를 추출해서 확인을 해 보면

[ obj 36 0 ]

base64로 디코딩을 할 수 있는 코드와 데이터가 있다. 이 데이터는 base64로 여러번 인코딩되어 있는데 이를 풀어보면

[ base64 디코딩 데이터 ]

키가 아니란다. 다시 쭉 훑어보다 보면

[ obj 39 0 ]

39번 obj를 보면 FlateDecode가 되어 있다. 이 데이터를 zlib를 통해 풀어보면

[ obj 39 0 - FlateDecompress ]

pdf 파일이 나옴을 알 수 있다. 이 데이터를 파일로 만들어 pdf로 열어보면 백지 화면이 나오는데 이 역시 pdf-parser.py를 이용하여 분석을 해 보면 다음과 같다.

[ obj 39 0 - 추출 pdf ]

obj 5번에 FlateDecode로 데이터가 숨어있음을 알 수 있다. 하지만 trailer를 보면 Encrypt로 보안설정이 되어 있기 떄문에 먼저 보안 설정을 풀어 주어야 한다. 보안 설정은 다음 사이트에서 풀었다. ( ref : https://smallpdf.com/kr/unlock-pdf)

보안이 풀린 pdf에서 obj 5번의 데이터를 추출해서 zlib을 통해 해석해주면 답을 얻을 수 있다.


기다려봐 툴만들어줌