워게임/CTFlearn

[CTFlearn] ShahOfGimli - 포렌식 / HxD / Binwalk / AES

SecurityMan 2023. 8. 26. 11:00

 

CTFlearn에서 제공하는 포렌식 문제

 

이번엔 이미지 파일과 암호에 관련된 문제이다.

 

반응형

 

 

요게 문제에서 주어지는 이미지이다.

 

반지의 제왕에 나오는 김리이다.

 

 

HxD로 해당 파일을 열어보니

 

열자마자 Base64 인코딩된 데이터가 엄청나게 보인다.

 

 

CyberChef() 에서 디코딩을 해보니

 

뭔가 Readme 처럼 보이는 내용이 나왔다.

 

이번 문제는 RubberDuck, Snowboard, PikesPeak, GandalfTheWise 와 같은

 

문제들을 풀고오면 좋다고 한다.

 

물론 블로그에서 이미 다 풀이했던 문제들이다.

 

(RuuberDuck : https://hackingstudypad.tistory.com/266)

(Snowboard : https://hackingstudypad.tistory.com/277)

(PikesPeak : https://hackingstudypad.tistory.com/288

(GandalfTheWise : https://hackingstudypad.tistory.com/365)

 

 

디코딩된 문구를 조금 더 내려보면

 

문제에 대한 힌트가 써있다.

 

세번째 코멘트 블럭은 AES CBC로 암호화되어있고

 

그 키값은 CTFlearn 을 sha256 해시한 값이라고 한다.

 

코멘트 블럭은 역시 base64 인코딩 되어있고

 

iv는 없는데 이걸 수학적으로 어떻게 표현해야할지 결정하라고 한다.

 

 

우선 key값을 먼저 구해준다.

 

온라인에서 아무 사이트나 들어가서 sha256 해시값을 만들어 준다.

 

 

세번째 코멘드 블럭은

 

HxD로 열어봤을 때 보였던 Base64 값 중에서

 

세번째 단락에 있는 이 부분을 말하는듯 하다.

 

 

CyberChef에서 해당 블럭을 AES Decrypt 해준다.

 

먼저 base64 디코딩을 한 뒤

 

key 값에 CTFlearn의 sha256 값을 넣어주고,

 

iv는 없다고 했으니 00으로 채워준다. 16바이트만큼 채워주면 된다.

 

Mode를 CBC로 설정하면

 

Output에서 평문을 볼 수 있다.

 

플래그가 세가지 나오는데

 

세개다 가짜 플래그이다.

 

 

뭔가 싶어서 HxD를 다시 열어

 

FF D9 를 검색해봤다.

 

정상적인 JPG 파일이라면 FF D9 뒤에 아무 데이터도 없어야 하지만

 

이 파일에는 뒤에 데이터가 많이 붙어있었다.

 

이건 JPG 파일 뒤에 다른 파일이 숨어있는 것이다.

 

 

binwalk 에서 -e 옵션을 줘

 

해당 데이터를 추출해 보았다.

 

 

이렇게 압축파일이 하나 나오는데

 

 

압축을 풀어보면

 

flag.enc와 Gimli04Base.jpg 파일 두개가 나온다.

 

여기서 다시 아까 나왔던 세 개의 가짜 플래그를 보면

 

flag.enc 파일에 대한 해독 힌트인것을 알 수 있다.

 

어떤 값을 sha256한 것이 key 값이라는 내용이다.

 

 

같이 나온 jpg 파일을 sha256 해시로 만들어서

 

 

flag.enc 를 복호화하는데 key 값으로 사용하면 된다.

 

그럼 이제 진짜 플래그가 나온다.

반응형