워게임/Root Me

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

SecurityMan 2022. 6. 18. 11:00

 

Root Me의 두번째 리버싱 문제

 

아직까지는 아주 쉬운 문제이다.

 

문제 설명을 보면 Find the validation password. 라고 적혀있다.

 

반응형

 

제목부터 Basic 이니 비밀번호는 아주 쉽게 찾을 수 있다.

 

 

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

 

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

 

 

문제 제목에서도 나온것처럼 ELF 파일인것을 확인할 수 있다.

 

뒤에 오는 x86은 32bit 환경에서 만들어진 프로그램임을 알려준다.

 

 

리눅스 환경에서 file ch2.bin 명령어를 통해서도 확인이 가능하다.

 

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

 

 

실험삼아 ./ch2.bin 명령어로 프로그램을 실행시켜 보았다.

 

username: 이라고 출력되면서 사용자 입력을 받는데

 

hello 라고 입력해 봤떠니 Bad username 이라는 문구가 나온다.

 

 

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

 

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

 

 

이 부분을 살펴보자.

 

printf 함수로 username: 을 출력하고,

 

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

 

그다음 strcmp 함수로 v4와 john이 같은지 비교한다.

 

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

만약 v4와 john가 같을 경우 0이 리턴되고,

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

리턴값이 1이되면, if 문 안으로 들어가서 printf 함수를 수행해 password: 가 출력될 것이다.

 

 

실제로 username에 john을 입력해주면, 그다음으로 password: 가 출력된다.

 

시험삼아 password에 hello를 넣었더니 역시나 Bad password 라는 문구가 나오고 있다.

 

 

 

password도 username과 같다.

 

v5 변수에 getString 함수로 사용자 입력값을 받아 저장하고,

 

strcmp 함수로 v5와 the ripper 가 같은지 비교하고 있다.

 

아까와 같은 원리로 password에 the ripper 를 입력해주면 될것이다.

 

 

위에서 확인한것 처럼

 

username에 john

 

password에 the ripper를 입력해주면 비밀코드가 출력된다.

 

 

참고로 John the Ripper 는 아주 유명한 패스워드 크래킹 도구이다.

반응형