개발, 연습

2019 HackCon 후기

Injel me 2020. 7. 1. 18:54
방학 동안 하는게 없는 것 같아서 HackCon CTF를 참가하기로 했다.

온라인으로 진행되는 HackCon은 8월 22~23일 하루동안 진행되었다.
(HackCon.online)

오랜만에 해 보는 CTF라 한 문제도 풀어보지 못할 것 같았고, CTF가 열리는 시간을 혼동하여 롤까지 하고 있었다. 놀듯이 해 봤던 것 같다.

결국 풀기를 성공한 문제는 스테가노그래피 100점이 부여된 첫 번째 문제뿐이었다. 이것도 예전에 비슷한 흐름을 본 적이 있어서 그 감으로 풀었던 것 같다.


사진을 열어보면 THIS_IS_NOT_A_FLAG라고 나온다. 플래그가 아니라고 하거니와 실제로 입력했을 때 플래그가 아니다.

스테가노그래피는 사진 등의 파일에 글자(암호)나 사진 등의 데이터를 숨기는 기법이라고 하며, 저 jpg파일에서 숨겨진 글자나 파일을 찾아야 한다.

openstego를 사용해 보았으나 png를 취급하며, openstego로는 나오는 데이터가 없었다.

HXD로 열어보았다.

우선, 각 파일의 확장자는 그 파일이 무엇인지 알려주기도 하지만, 각 확장자를 사용했을 때 파일이 가지는 시그니처 데이터들이 있다.

jpg파일을 Hex Viewer 등으로 hex data를 읽어볼 때 맨 앞에 이런 종류의 hex data가 나와야 이 파일이 jpg 파일임을 입증하는 것이다.
위의 블로그에서 나온 대로, FF D8 FF E0으로 시작하며 옆에 아스키 문자로도 JFIF를 바로 볼 수 있는 것을 알 수 있다.

파일을 자세히 보면, 시그니처 뒤에 각 헤더 구조체 데이터처럼 보이는 데이터들이 있다. PE 파일처럼 파일을 구조적으로 만들어 놓았다.

그런데 이 파일을 자세히 보면, 파일 시그니처가 한 번 더 나오게 된다.

파일 시그니처와 구조체들로 이루어진 것으로 예상되는 데이터가 다 나온 후에, 시그니처가 한 번 더 나오게 된다.

파일 속에 jpg 헤더를 중복되게 넣었는것 같다. 둘 중에 하나는 잘못된 위치 정보를 가지게 하는 헤더 데이터들일 것이라고 생각했다.

위의 헤더 데이터를 삭제하여 저장해 보았다.

위의 헤더 데이터를 지워 두 번째 시그니처가 오는 부분부터 파일이 이루어지게 수정하고 저장했다.

파일을 열게 되면 이전과 다른 사진이 나오고, QR코드를 읽어보면

이렇게 플래그가 나오게 된다.


//

stego.jpg 문제의 후기는 난이도 0/10 이었던 것 같다. 나머지 문제를 한 개도 못풀었기 때문에,,

수고비읍~