이번 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 을 입력해준다.
엔터를 치면
바로 이런 대화내용이 출력되면서
마지막에 플래그가 나오게 된다.
'CTF > 리버싱' 카테고리의 다른 글
[n00bzCTF] EZrev - 리버싱 / Java (70) | 2023.07.03 |
---|---|
[angstromCTF] zaza - 리버싱 / IDA (86) | 2023.05.22 |
[Space Heroes CTF] Acheron - 리버싱 / IDA (44) | 2023.04.30 |
[TJCTF] take-a-l - 리버싱 / IDA (58) | 2023.04.26 |
[Tenable CTF] Play Me - 리버싱 / VisualBoyAdvance (60) | 2023.04.08 |