HackCTF Forensic 10번째 문제는 "Let'S get it! Boo*4"다.
해당 문제는 다음과 같다. 이 문제의 경우에는 문제 이름에서부터 사용해야 하는 개념을 알려주고 있다. 해당 문제의 이름에서 대문자만 따오면 "LSB"라는 문자열이 만들어진다. 즉, 이 문제는 스테가노그래피를 이용한 LSB 변조가 되어 있음을 알 수 있고, 해당 개념을 사용하여 푸는 문제라고 할 수 있다.
이미지 스테가노그래피는 이미지 파일에 메시지를 숨기는 방법이다. 숨기는 방법은 삽입과 변조, 두 가지 방법이 있다. 변조의 방식 중에는 최하위 비트인 LSB를 변조하는 방법이 있다. 주로 JPEG, BMP와 같은 24비트 이미지 파일에 적용된다고 한다. LSB 변조를 하면 물론 실제 이미지에 영향을 주기는 하지만 24비트(빨강 8, 초록 8, 파랑 8)가 하나의 색을 표현하므로 사람의 육안으로 알아채기는 힘들다. 스테가노그래피에 대한 추가 설명은 이 블로그를 참고하면 될 것 같다.
사용한 툴은 zsteg로 png 및 bmp 파일에서 숨겨진 데이터를 감지할 수 있다. 먼저 zsteg를 설치했다.
apt install ruby
gem install zsteg
root 계정으로 로그인한 후에 위의 두 명령어를 순서대로 입력해서 zsteg 툴을 설치했다.
"zsteg -h" 명령어를 입력하면 zsteg의 전반적인 명령어에 관하여 확인할 수 있다.
[-a] 옵션을 사용하여 모든 내용을 봤다. 그랬더니 플래그의 형식과 같은 HackCTF{~~ 형태의 문자열이 보였다.
아까 플래그와 형식이 같아 보였던 b1, lsb, bY 부분을 자세히 보기 위해 [-v] 옵션을 사용하여 살펴봤다. 역시 HackCTF{-u].~~~} 형식으로 이뤄져 있다. 해당 문자열을 플래그에 넣고 인증하려 했더니 안 된다. 중간에 0xCDA9 이런 식으로 헥스 값이 있는데 플래그에 들어가는 문자라고 생각하여 유니코드 값을 검색해보니 '충'이었다. 따라서 4 글자씩 끊어서 유니코드 값을 확인해보면 될 것 같다는 생각이 들었다.
사진 설명에 나와 있는 사이트에 들어가서 hex 값을 유니코드 값으로 변환했다. 그랬더니 한글 문자열이 나왔다. 이를 통해 플래그를 구할 수 있었고, 인증하면 문제가 풀린다.
Flag: HackCTF{넌충분히가치있는존재야}
이렇게 포렌식도 올클했다. (웹/리버싱/포렌식 올클..!) 포렌식은 생각해보면 multimedia 분야밖에 출제되지 않아 조금 아쉬웠던 것도 있었다. (나머지 분야도 출제되면 좋을 듯!)
[HackCTF-Forensic#9] 잔상 - 250 points (0) | 2022.01.16 |
---|---|
[HackCTF-Forensic#8] Terrorist - 200 points (0) | 2022.01.16 |
[HackCTF-Forensic#7] Magic PNG - 150 points (0) | 2022.01.16 |
[HackCTF-Forensic#6] 나는 해귀다 - 150 points (0) | 2022.01.15 |
[HackCTF-Forensic#4] Secret Document - 150 points (0) | 2022.01.14 |
댓글 영역