BoB/write-up

[BoB CTF] misc) 03_I'm_Happy

re.t 2023. 8. 24. 16:18

(대회 기간 내에 풀지는 못했지만, 늦게나마 풀어서 롸업을 작성해본다.)

Audio 기반의 스테가노그래피 문제이다. 보통 이런 경우에는 정형화된 유형이 몇 가지 있는데 크게 세 가지 케이스를 들 수 있다.

1. 오디오 스펙트럼을 시각화하면 플래그가 보이거나

(가청 주파수 대역 안에서 플래그를 그렸다면 음원 만으로도 티가 나지만, 아무래도 20000Hz를 넘긴다면 강아지가 아닌 이상 음원만 듣고서는 바로 알아채기 어렵다. )

2. LSB에 바이너리를 숨겨두거나

3. 음원 자체가 모스부호 (...)나 SSTV 방식의 음원인 경우

(이 경우에도 다른 음원을 섞을 경우 노이즈를 제거하고 원본 파일을 성공적으로 복원하기 어려워지기 때문에 원본을 숨기지 않고 그대로 출제하는 경우가 많아 티가 많이 난다.)

 

HxD로 까봤으나, 매직 넘버도 정상적이고, 스펙트럼도 특이한 점이 보이지 않는다.

그렇다면 정말 특이한 문제가 아닌 이상 남은 경우의 수는 2번 뿐인데...

직접 코드를 짜지 않고 GPT한테 외주를 맡기고 그동안 다른 문제를 풀고 있었더니 두고두고 후회할 일이 생기고 말았다.

LSB에 플래그가 없다는 말만 듣고 주파수 대역별로 쪼개서 살펴보고, 스테레오 채널을 쪼개서 이리저리 뒤집어 보고, 음역대별로 통계를 내보기도 하고 별 짓을 다 했는데 ㅋㅋ....

 

pip3 install stego-lsb 를 통해 패키지를 설치하고, 적절한 크기의 바이트를 지정해주면 된다.

vim에서 xxd로 진입하거나, 헥스 에디터로 오픈해보명 아래와 같이 플래그를 확인할 수 있다.