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 는 아주 유명한 패스워드 크래킹 도구이다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] Insecure Code Management - 웹해킹/ Directory Listing / git (42) | 2022.06.25 |
---|---|
[Root Me] PE x86 - 0 protection - 리버싱 / Ollydbg (56) | 2022.06.22 |
[Root Me] ELF x86 - 0 protection - 리버싱 / IDA (54) | 2022.06.16 |
[Root Me] HTTP - Cookies - 웹해킹 / 쿠키변조 (54) | 2022.06.09 |
[Root Me] File upload - MIME type - 웹해킹 / WebShell (64) | 2022.06.08 |