ssh level1@io.netgarage.org
password: level1
서버가 굉장히 느리다.
로그인을 하면, /levels 디렉토리에서 자신의 레벨 파일을 실행시키면 된다.
문제는 바이너리 형태로 제공되고 있는 것 같다.
level1@io:/levels$ ./level01
Enter the 3 digit passcode to enter: 123
처음 실행하면 세 숫자를 입력하라고 나오고 입력 후에는 꺼진다.
gdb로 까보면
(gdb) disassemble main
Dump of assembler code for function main:
0x08048080 <+0>: push $0x8049128
0x08048085 <+5>: call 0x804810f <puts>
0x0804808a <+10>: call 0x804809f <fscanf>
0x0804808f <+15>: cmp $0x10f,%eax
0x08048094 <+20>: je 0x80480dc <YouWin>
0x0804809a <+26>: call 0x8048103 <exit>
End of assembler dump
puts() 로 Enter the ~ 를 출력해주고,
fscanf() 로 수를 입력받은 후에
cmp 로 문자열 비교 후 맞으면 YouWin 을,
exit() 호출
인것 같다.
저기 0x10f 주소값에 있는 값을 확인해보자
(gdb) print 0x10f
$1 = 271
(gdb)
271 과 비교를 한다.
따라서 바이너리 실행 후에 271 를 입력해주면
level1@io:/levels$ ./level01
Enter the 3 digit passcode to enter: 271
Congrats you found it, now read the password for level2 from /home/level2/.pass
sh-4.2$ # ////////
sh-4.2$
sh-4.2$ cat /home/level2/.pass
3ywr07ZFw5IsdKzU