Sunday, November 8, 2009

io.smashthestack.org game for IO debug.. segmentation default.. bla bla bla.. level1 tutorial

tutorial ni untuk orang yang baru belaja.. macam aku.. hahaha.. ok first of all..
nak main game ni korang kene ada ssh client.. kalo windows gune putty.
connect ke io.smashthestack.org port 2224
username: level1
pass: level1

ok.. korang baca la README tu dulu..
lepas tu.. nak start game tu korang kene masok / dulu
caranya..

level1@io:~$ cd ..
level1@io:/home$ cd ..
level1@io:/$ cd levels/

ok.. lepas tu runkan level1 binary tu.. dapat camni

level1@io:/levels$ ./level1
Usage: ./level1

ok.. kita kene cari pass apa yang nak dimasukkan.. biasanye dier akan compare string yang kita masokkan dengan string yang di set lam tu.. :). takpon kita leh cari string untuk overflow.. tapi kalo korang debug level1 ni.. dier secure compare

0x0804846c : call 0x804830c <-- gune strncmp

okeh.. papehal pon disassemble dulu ye.. run gdb dulu apa2 hal..

level1@io:/levels$ gdb -q level1
(gdb)disass main

ok korang tengok apa yang die tulis kat situ..

0x08048465 : mov %eax,0x4(%esp)
0x08048469 : mov %ecx,(%esp)
0x0804846c : call 0x804830c <-- tengok line ni
0x08048471 : test %eax,%eax
0x08048473 : jne 0x804849f
0x08048475 : movl $0x80485ea,(%esp)

line yang aku soh tengok tu.. kat situ la die compare apa yang di taip.. yang pass word btol.. kita kene break process kat situ supaya leh tengok apa ada lam register.. so kita leh la tengok password btol
(gdb) break *0x0804846c
Breakpoint 1 at 0x804846c

lepas dah set breakpoint.. kita run binary tu gune pass apa2

(gdb) run ahakahak
Starting program: /levels/level1 ahakahak

Breakpoint 1, 0x0804846c in main ()

skang tengok register..
(gdb) info registers
eax 0x80485c8 134514120
ecx 0xbfffdebb -1073750341
edx 0xb 11
ebx 0xefcff4 15716340
esp 0xbfffdcf0 0xbfffdcf0
ebp 0xbfffdd28 0xbfffdd28
esi 0x8048510 134513936
edi 0x80485d4 134514132
eip 0x804846c 0x804846c
eflags 0x282 [ SF IF ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51

ok.. tengok apa yang ada lam register atas sekali tu..

(gdb) x/s 0x80485c8
0x80485c8: "omgpassword"

HA! tu password btol..
quit gdb.. test pass tu..

level1@io:/levels$ ./level1 omgpassword
Win.
sh-3.2$

Ngeh Ngeh.. level1 pawned! (baru level1 ades..)

ok.. skang kita dah ada level2 proviledge.. so kita leh tengok pass level2
sh-3.2$ cd /home/level2
sh-3.2$ cat .pass
ef4artie

orait.. tu pass level2 :)

No comments: