CTF/리버싱

[Space Heroes CTF] Galactic Federation - 리버싱 / IDA

SecurityMan 2023. 5. 11. 11:00

 

이번 CTF의 두번째 리버싱 문제

 

첫번째 문제보단 어렵지만

 

차근차근보면 충분히 해결할 수 있다.

 

반응형

 

 

문제에서 주어지는 것은 galactic_federation.bin 파일이다.

 

 

한번 실행시켜 봤는데

 

USERNAME 과 PASSWORD 를 입력받는다.

 

 

바로 IDA 를 이용해 해당 바이너리를 확인해봤다.

 

여기있는 함수들이 정의된 함수들인데

 

login_page() 함수가 보인다.

 

 

사용자가 입력한 USERNAME 과 PASSWORD 를

 

v7, v8 에 저장하고,

 

해당 값을 obfuscate 에 집어넣는다.

 

그 결과 값이 각각 hktpu, 8fs7}:f~Y;unS:yfqL;uZ 와 같다면

 

로그인이 성공하게 된다.

 

 

obfuscate 함수로 가보니

 

단순히 입력받은 값에 +7 을 하고 있었다.

 

 

CyberChef(https://gchq.github.io/CyberChef) 에서

 

해당 값들을 -7 해주면

 

USERNAME 은 admin,

 

PASSWORD 는 1_l0v3_wR4ngL3r_jE4nS 라는것을 알아낼 수 있다.

 

 

로그인을 하면

 

Admin Terminal 이 나온다.

 

메뉴가 여러개 있는데

 

 

IDA에서 collapse_economy() 함수를 보면

 

맨 아래쪽에 flag.txt 를 print_file 하는 함수가 있다.

 

collapse_economy() 가 실행되게끔 움직여아 한다.

 

 

어디서 호출하는지 봤더니

 

adjust_economy() 에서 호출하고 있었다.

 

단 조건이 있는데

 

currency 가 0이고, galactic_currency 가 usd 인 경우 호출이 된다.

 

currency 는 adjust_economy 에서 inflate_currency 를 선택하여 조정할 수 있고

 

galactic_currency 는 

 

presidential_decree 에서 change_galactic_currency 를 선택하여 변경할 수 있다.

 

 

다시 콘솔로 와서

 

admin terminal 에서 presidential_decree 메뉴로 접속한다.

 

 

change_galactic_currency 를 선택하고

 

usd 를 입력해 galactic_currency 를 바꿔준다.

 

 

다시 메인화면으로 가서 adjust_economy 를 선택하고

 

 

inflate_currency 메뉴에서 

 

-100 을 입력해준다.

 

 

엔터를 치면 

 

바로 이런 대화내용이 출력되면서

 

마지막에 플래그가 나오게 된다.

반응형