[ 문제 링크 ]
https://ctflearn.com/challenge/936
[ 문제 풀이 ]
우선 해당 문제에서 주어진 파일은 위 이미지 파일 뿐이었다.
HxD로 열어봤을 때 크게 얻을 수 있는 단서가 없어서 문제 힌트로 나와있는 부분을 보니 스크립트 코드를 짜면 빨리 해결할 수 있을거라는 부분이 있었다.
이 부분을 통해 아마 무언가를 변환하는 것은 아닐까 싶은 생각이 들었다.
하지만, 이 이후에서 더 이상 유추가 어려워 해당 문제를 푼 사람들의 Write-up을 확인해보았다.
여러 자료들을 찾아보니 Base64 디코딩과 관련된 문제로 보였다.
우선, strings 명령어를 사용하여 해당 이미지 파일 즉 바이너리 파일에서 문자열을 추출할 수 있었다.
그 결과, JFIF 이후에 base64로 인코딩된 3개의 문자열을 확인할 수 있었다.
첫번째 문자열을 base64로 디코딩을 해보니 위 이미지와 같은 문자열이 출력되었다
설마 하는 마음에서 나온 값을 플래그 값으로 넣어보았더니 역시나 실패였다...^^
하지만 완전히 도움이 안되었던 것은 아니다 가짜 플래그 값을 통해 힌트를 주고 있음을 확인할 수 있었다.
아마 Base64 디코딩과 XOR을 활용하면 문제를 풀 수 있을 것 같다!
나머지 2개의 문자열에 대해 Base64 디코딩을 진행하고 그 값을 XOR 해보자
먼저, 나머지 2개 문자열에 대해 Base64로 디코딩을 해주어 바이트 값을 얻을 수 있었다.
https://cryptii.com/
각각 얻은 바이트 값을 활용하여 문자열 XOR을 진행하였다.
이후 해당 값을 활용하여 플래그를 찾기 위해 바이트를 문자열로 변경해주었더니 플래그 형식과 동일한 형태의 문자열을 확인할 수 있었다.
해당 문자열을 플래그 값으로 넣으니 문제를 해결할 수 있었다!
문제 해결-!!
문제 풀이를 위해 다른 사람들의 풀이를 찾아보면서 디코딩을 위해 직접 파이썬 코드를 작성한 사람도 있었고, 다양한 풀이도 함께 발견할 수 있어서 흥미로웠던 것 같다.
참고 자료
https://niekdang.wordpress.com/2020/07/08/ctflearn-solution-gandalfthewise/
https://github.com/SanketBaraiya/CTFlearn-Solutions/tree/main/GandalfTheWise
'CTF > Digital Forensic' 카테고리의 다른 글
[Dreamhack] Basic_Forensics_1 (0) | 2024.05.22 |
---|---|
[CTFLearn] WOW.... So Meta (0) | 2024.04.03 |
[CTFLearn] Taking LS (0) | 2024.03.27 |
[CTFLearn] Forensics 101 (0) | 2024.03.27 |