beginniner-friendly 난이도의 리버싱 문제
IDA 만 사용할 줄 안다면 쉽게 풀 수 있다.
친절하게 문제 서버에 접속할 수 있는 pwntool 파이썬 코드도 같이 주어진다.
우선 주어진 파이썬 코드로 접속해봤다.
접속하니 적대적인 외계 행성에서 길을 잃었다고
우주선으로 돌아가야 한다고 한다.
그리고 사용자 입력을 받는데
입력값은 N, S, E, W 만 가능하다고 나와있다.
상상해본건데 체스판 같은곳에 내가 있고
동서남북으로 특정한 패턴으로 움직이면 우주선에 도달할 수 있는듯 하다.
입력값에 N, S, E, W 가 아닌 test 라고 입력해봤는데
우주선을 찾지 못했다면서 interactive 가 꺼져버린다.
문제에서 주어진 바이너리 파일인 Acheron 을 IDA 로 열어본다.
main 함수의 수도코드르 ㄹ보면
s 에 사용자 입력값을 담아 s의 각 자리의 값이 특정한 값과 일치하는지 비교하고 있다.
비교한 뒤 다르면 sub_1169() 가 실행되는데
sub_1169() 은 아까 봤던 실패문구이다.
모든 과정을 다 통과하면 success() 가 실행되고
success() 가 실행되면 플래그를 읽을 수 있다.
그럼 간단하게 각 자리에 맞는 입력값을 넣어주기만 하면 된다.
CyberChef(https://gchq.github.io/CyberChef) 에서 디코딩을 해보면
이렇게 어느방향으로 움직여야 하는지 쉽게 알 수 있다.
다시 접속해서 올바른 방향을 입력해주면
플래그가 출력되는것을 볼 수 있다.
'CTF > 리버싱' 카테고리의 다른 글
[angstromCTF] zaza - 리버싱 / IDA (86) | 2023.05.22 |
---|---|
[Space Heroes CTF] Galactic Federation - 리버싱 / IDA (69) | 2023.05.11 |
[TJCTF] take-a-l - 리버싱 / IDA (58) | 2023.04.26 |
[Tenable CTF] Play Me - 리버싱 / VisualBoyAdvance (60) | 2023.04.08 |
[CTFlearn] Time to Eat - 리버싱 / Python (50) | 2023.03.31 |