워게임/Root Me

[Root Me] ELF x86 - 0 protection - 리버싱 / IDA

SecurityMan 2022. 6. 16. 11:00


Root Me에서 제공하는 첫번째 리버싱 문제

아무래도 첫번째 문제이기때문에 아주 쉽다.(배점도 5 point 밖에 안된다.)

반응형


제목도 참 정직하다.


문제파일로 ch1.bin 파일이 주어지는데

해당 파일을 HxD 프로그램을 이용해 열어보면


ELF 파일인것을 확인할 수 있다.

제목의 ELF 뒤에 오는 x86은 32bit 환경에서 동작하는 프로그램임을 알려주고,

0 protection은 말 그래도 아무런 보안조치도 되지 않은 프로그램 이라는 뜻이다.


리눅스 환경에서 file ch1.bin 명령어를 통해서도 확인할 수 있다.

ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다.


실험삼아 ./ch1.bin 해서 프로그램을 실행시켜 봤다.

Veuillez entrer le mot de passe : 라는 문구가 나오면서 사용자 입력을 받는데

이건 비밀번호를 입력해주세요 라는 프랑스어이다.

프랑스어가 나오는 이유는 Root Me가 프랑스 사이트이기때문..

시험삼아 hello 라고 입력해봤더니

Dommage, essaye encore une fois.(죄송합니다, 다시 시도해 주세요) 라는 문구가 나온다.
* 구글 번역기 돌렸다.

아무래도 적당한 비밀번호를 맞춰야 하는듯 하다.


좀더 자세히 보기위해 디스어셈블러인 IDA 프로그램을 이용했다.

main 함수에서 f5 버튼을 눌러 수도코드를 확인해본다.

아까 봤던 Veuillez entrer le mot de passe : 를 printf 함수를 이용해 출력하고

s1a 변수에 getString 함수로 사용자 입력을 받아 저장하고 있다.


그다음 이부분이 핵심인데

strcmp 함수로 s1a 변수와 123456789 가 같은지 확인하고 있다.

strcmp 함수는 두 비교대상이 같으면 0을 리턴하는데,

만약 s1a와 123456789가 같을 경우 0이 리턴되고,

strcmp 함수 앞에 있는 ! 때문에 리턴값은 1로 바뀐다.

리턴값이 1이되면, if 문 안으로 들어가서 printf 함수를 수행하고,

반대의 경우 아까 hello를 입력했을때 봤던 문구를 출력한다.

그럼 간단하게 비밀번호를 입력할때 123456789을 입력하면 문제를 해결할 수 있는 것이다.


비밀번호에 123456789를 입력해주면 문제가 풀린다.

반응형