워게임/CTFlearn

[CTFlearn] PIN - 리버싱 / IDA

SecurityMan 2023. 1. 13. 11:00

 

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 번호가 바로 플래그이다.

반응형