CTF/포렌식

[HouseplantCTF] Ezoterik - 포렌식 / 스테가노그래피 / Base58

SecurityMan 2022. 6. 19. 11:00

 

간단한 스테가노그래피 문제

 

문제 자체는 어렵진 않은데 중간에 훼이크가 좀 있어서 시간을 좀 잡아먹었다.

 

반응형

 

문제파일로 ezoterik.jpg 파일이 주어진다.

 

 

ezoterik.jpg 파일을 열어보면 이런 사진이다.

 

 

사진 중간을 보면 이렇게 알수없는 기호들이 나열되어있는것이 보이는데

 

사실 이건 프로그래밍 언어다.

 

이렇게 + [ - > < . 기호로 이루어진 언어는 BrainFxxx 이라고 한다.

(x로 적었으나 모두가 생각하는 그 단어가 맞다.)

 

 

위키피디아를 찾아보면 실제 있는 언어인걸 알 수 있다.

 

당연히 실제로는 잘 사용되지 않는 언어이고, 이름처럼 그냥 장난처럼 만들어진 언어이다.

 

일단 저걸 먼저 해석해봐야겠다 싶어서

 

저걸 일일이 다 메모장에 받아적어서 컴파일 해봤는데

 

아무것도 안나왔다..

 

그냥 훼이크였던 것이다.

 

 

 

HxD 프로그램을 이용해서 ezoterik.jpg 파일을 열어보면

 

파일 맨 앞에 FF D8 이라는 문자열이 나오는것을 볼 수 있다.

 

이런걸 파일 시그니처 라고 부르는데,

 

모든 JPG 파일은 맨 처음 시작할때 FF D8로 시작한다.

(보통 FF D8 FF E0 까지 4바이트 정도로 본다.)

 

마찬가지로 끝날때는 FF D9로 항상 끝이 나는데

 

 

주어진 JPG 파일에서 FF D9를 찾아보면, 

 

FF D9에서 파일이 끝나지 않고, 아랫쪽에 이상한 문자열이 더 있는것을 볼 수 있다.

 

이런식으로 메세지를 JPG 파일안에 숨길 수 있다.

 

2TLEdubBbS21p7u3AUWQpj1TB98gUrgHFAiFZmbeJ8qZFb9qCUc8Qp6o86eJYkrm2NLexkSDyRYd3X9sRCRKJzoZnDtrWZKcHPxjoRaFPHfmeUyoxyyWQtiqEgdJR1WU4ywAYqRq7o55XLUgmdit6svgviN8qy72wvLvT2eWjECbqHdrKa2WjiAEvgaGxVedY8SRXXcU9JbP5Ps3RY2ieejz6DrF9NBD7mri2wrsyDs9gpVgosxnYPbwjGdmsq7GwudbqtJ7SeKgaStmygyfPast5F3ZKL9KeC2LzCeenffoZ4d4Cna7TZdkUsfdK1HNmoB46fo9jK5ENQwnWdPmZBnZ4h8uDxHpQF74rs3wPcpmch6Byu31och1cyz8JxgXkacHpTrGeAN2bEhRp8kDQpmPtj9QqaAgxTbam9hoB4mvtrRmRx5GnzzZoWW5qDxwMvgKCYWiLwtLcvjDZPNdHGbvFspFeCq7kBcTeyrjYeHxuwwwM1GpdwMdxzNiFK1jYkA4DUZRohuKxeyhBFiY9HuwD6zKf9nZMThoYwTGhAJR2d3GqVqXGsivAKLs1oBzrmH9V6vaMwAjM7Hu69TLfKHtZUThoiEDftxPJdraNxoQps3mFamNbT1U3kRdpAz5s5kq6i2jLBUjBjAdV9N8jWNqx4RgiaHTW5qqb8E6JvHgQyrVkLmMdsjoLAWaWZLRw2pQpBJehRsx1LU6wmAC1nfeLbdQxPmytaMUURBDhHVqPNxwThCzZsnA9RuKrYWGsmyTxCzVUEjvUXaU4hkoV62qn7G1TnVRiADNhRfMnxm8R2ZoSPxEhVaFyHvLweq

 

뒤에 있는 문자열 전체를 가져와 보았다.

 

알파벳 대소문자와 숫자로 이루어진게 뭔가 Base64로 인코딩 된 듯한 느낌이었다.

 

 

CyberChef(https://gchq.github.io/CyberChef) 사이트에서 Base64 디코딩을 해봤는데 

 

의외로 이상한 문자열이 나왔다.

 

 

여러가지 시도해보다가 Base58로 디코딩을 해봤더니

 

정상적인 문자열이 나오는 것을 확인했다.

 

elevator lolwat 으로 시작해서

 

아래쪽에 action main 이라고 되어있는것으로 보아

 

프로그래밍 언어인거 같아서 찾아보니 

 

 

Elevator 라는 프로그래밍 언어라고 한다.

 

아까 봤던 BrainFxxx 처럼 재미로 만든 프로그래밍 언어이다.

 

elevator lolwat
  action main
    show 114
    show 116
    show 99
    show 112
    show 123
    show 78
    show 111
    show 116
    show 32
    show 113
    show 117
    show 105
    show 116
    show 101
    show 32
    show 110
    show 111
    show 114
    show 109
    show 97
    show 108
    show 32
    show 115
    show 116
    show 101
    show 103
    show 111
    show 95
    show 52
    show 120
    show 98
    show 98
    show 52
    show 53
    show 103
    show 121
    show 116
    show 106
    show 125
  end action
  action show num
    floor num
    outFloor
  end action
end elevator

 

전체 코드는 위와 같이 나왔는데

 

대충 봐도 뭔가 복잡한게 없고 그냥

 

show 000 이런형식이라 단순히 ASCII 코드를 print 하는 함수라고 생각했다.

 

 

show 뒤에 있는 숫자들만 모아서

 

CyberChef에서 From Decimal 을 이용해 ASCII 코드 디코딩을 해주면

 

플래그를 찾을 수 있다.

반응형