CTFlearn의 쉰 여섯번째 문제
이번엔 처음으로 나온 리버싱 문제이다.
문제 난이도가 Medium으로 분류되어 있는데
풀어보면 Easy 수준으로 느껴질만큼 쉽다.
문제에서 주어지는것은 rev1 파일이다.
리눅스 환경에서 file 명령어를 통해
어떤 파일인지 확인할 수 있다.
ELF 파일이라고 나오는데
ELF는 리눅스에서 실행가능한 실행파일이다.
한번 실행시켜 봤더니
실행하자마자 Masukan PIN = 이라는 문구가 나오며
사용자 입력을 받는데
123 이라고 입력해봤더니 PIN salah! 라는 문구가 출력되었다.
검색해보니 salah 는 잘못되었다는 뜻이라고 한다.
IDA 라는 디스어셈블러를 이용해 rev1 파일을 열어보았다.
main 함수의 수도코드를 가장 먼저 살펴보니
scanf 로 사용자의 입력을 받은 후
그 값을 v4에 저장하고
v4에 저장된 값을 cek 함수에 전달하여
그 함수의 실행 결과에 따라 PIN benar / PIN salah 를 출력하는 구조였다.
여기서 benar는 correct 와 같은 의미이다.
cek 함수를 더블클릭해서 확인해본다.
cek 함수는 인자로 전달받은 a1 값이 valid와 같은지 검증하는 함수이다.
valid 를 더블클릭하면 어떤 값이 들어있는지 확인할 수 있다.
6자리 숫자가 들어있는데
그 부분이 바로 문제에서 요구하는 PIN 번호이다.
rev1 을 실행시킨 후 아까 찾은 PIN 번호를 넣어주면
예상한대로 benar 가 출력되는것을 확인할 수 있다.
해당 PIN 번호가 바로 플래그이다.
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] Blank Page - 포렌식 / Unicode / HxD (56) | 2023.01.18 |
---|---|
[CTFlearn] Tone dialing - 암호학 / DTMF (80) | 2023.01.16 |
[CTFlearn] The Credit Card Fraudster - 프로그래밍 / Python (48) | 2023.01.11 |
[CTFlearn] Simple bof - 포너블 / 버퍼오버플로우 (79) | 2023.01.09 |
[CTFlearn] Image Magic - 프로그래밍 / 포렌식 / PIL (76) | 2023.01.06 |