CTF/리버싱

[angstromCTF] zaza - 리버싱 / IDA

SecurityMan 2023. 5. 22. 11:00

 

간단한 리버싱 문제

 

제목이 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 라는것을 알 수 있었다.

 

 

알아낸 것들을 기반으로 

 

원격으로 접속해 입력하면 된다.

 

이상하게 두번째 단계는 아무 숫자나 입력해도 다 통과가 됐다.

반응형