간단한 리버싱 문제
제목이 ZAZA 인데
문제를 풀어보고 문제 낸 사람이 혹시 한국사람이 아닐까 생각했다.
원격으로 접속할 수 있는 주소와
바이너리 파일이 함께 주어진다.
바로 IDA라는 디스어셈블러를 이용해 열어봤다.
정의된 함수는 main, xor_, win 세 가지가 있다는 것을 알아냈다.
main 함수의 수도코드를 보니
세가지 정도 검증 과정을 거친다는것을 알 수 있었다.
먼저
I'm going to sleep. Count me some sheep: 가
출력되면서 사용자 입력을 받는다.
사용자의 입력값은 v5에 저장되고,
그 값이 4919 인지 확인한다.
맞으면 다음으로 넘어간다.
다음으로
Nice, now reset it. Bet you can't: 가
출력되면서 사용자 입력을 받는다.
이번엔 v6 에 입력값이 저장되고,
v5 * v6 의 값이 1이 되면 다음으로 넘어간다.
마지막으로
Okay, what's the magic word? 가
출력되면서 사용자 입력을 받는다.
사용자 입력값은 s 에 저장된 뒤 xor_ 함수의 인자로 들어가고
xor_ 수행한 값이 2& =$!-( <*+*( ?!&$$6,. )' $19 , #9=!1 <*=6 <6;66# 와 같으면
win 함수가 실행된다.
xor_ 함수를 보면
xor 하는 key 값은 anextremelycomplicatedkeythatisdefinitelyuselessss 라는것을 알 수 있다.
CyberChef(https://gchq.github.io/CyberChef/) 에서 바로 XOR 을 해봤다.
그랬더니 SHEEPSHEEPSHEEP.... 가 magic word 라는것을 알 수 있었다.
알아낸 것들을 기반으로
원격으로 접속해 입력하면 된다.
이상하게 두번째 단계는 아무 숫자나 입력해도 다 통과가 됐다.
'CTF > 리버싱' 카테고리의 다른 글
[2021CCE] Read For Me - 리버싱 / WebAssembly / Burp Suite (154) | 2023.08.15 |
---|---|
[n00bzCTF] EZrev - 리버싱 / Java (70) | 2023.07.03 |
[Space Heroes CTF] Galactic Federation - 리버싱 / IDA (69) | 2023.05.11 |
[Space Heroes CTF] Acheron - 리버싱 / IDA (44) | 2023.04.30 |
[TJCTF] take-a-l - 리버싱 / IDA (58) | 2023.04.26 |