ret2text调试找栈溢出过程,注意看栈

ret2text调试找栈溢出过程,注意看栈
尤其注意ni和si的区别,注意好进入函数的时机

mosen@ubuntu:~/Desktop$ gdb ret2text
GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
Copyright (C) 2018 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 "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
pwndbg: loaded 196 commands. Type pwndbg [filter] for a list.
pwndbg: created $rebase, $ida gdb functions (can be used with print/break)
Reading symbols from ret2text...done.
pwndbg> b main
Breakpoint 1 at 0x804856b: file babystack.c, line 22.
pwndbg> r
Starting program: /home/mosen/Desktop/ret2text 

Breakpoint 1, main () at babystack.c:22
22	babystack.c: No such file or directory.
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────
 EAX  0xf7fb8dd8 (environ) —▸ 0xffffd29c —▸ 0xffffd458 ◂— 'CLUTTER_IM_MODULE=xim'
 EBX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
 ECX  0xffffd200 ◂— 0x1
 EDX  0xffffd224 ◂— 0x0
 EDI  0x0
 ESI  0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
 EBP  0xffffd1e8 ◂— 0x0
 ESP  0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
 EIP  0x804856b (main+26) —▸ 0xfff8838b ◂— 0xfff8838b
─────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]──────────────────────────────────────────────────────────────────────────────────────────
 ► 0x804856b <main+26>    mov    eax, dword ptr [ebx - 8]      <0xf7fb8dd8>
   0x8048571 <main+32>    mov    eax, dword ptr [eax]
   0x8048573 <main+34>    sub    esp, 8
   0x8048576 <main+37>    push   0
   0x8048578 <main+39>    push   eax
   0x8048579 <main+40>    call   setbuf@plt                     <setbuf@plt>

   0x804857e <main+45>    add    esp, 0x10
   0x8048581 <main+48>    mov    eax, dword ptr [ebx - 4]
   0x8048587 <main+54>    mov    eax, dword ptr [eax]
   0x8048589 <main+56>    sub    esp, 8
   0x804858c <main+59>    push   0
──────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────
00:0000│ esp 0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
01:0004│     0xffffd1e4 ◂— 0x0
02:0008│ ebp 0xffffd1e8 ◂— 0x0
03:000c│     0xffffd1ec —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
04:0010│     0xffffd1f0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
05:0014│     0xffffd1f4 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
06:0018│     0xffffd1f8 ◂— 0x0
07:001c│     0xffffd1fc —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────
 ► f 0 0x804856b main+26
   f 1 0xf7df7f21 __libc_start_main+241
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> n
23	in babystack.c
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────
*EAX  0xf7fb75c0 (_IO_2_1_stdin_) ◂— 0xfbad208b
 EBX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
*ECX  0xf7fb7607 (_IO_2_1_stdin_+71) ◂— 0xfb889c00
*EDX  0xf7fb889c (_IO_stdfile_0_lock) ◂— 0x0
 EDI  0x0
 ESI  0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
 EBP  0xffffd1e8 ◂— 0x0
 ESP  0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
*EIP  0x8048581 (main+48) —▸ 0xfffc838b ◂— 0x0
─────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]──────────────────────────────────────────────────────────────────────────────────────────
   0x8048573 <main+34>    sub    esp, 8
   0x8048576 <main+37>    push   0
   0x8048578 <main+39>    push   eax
   0x8048579 <main+40>    call   setbuf@plt                     <setbuf@plt>

   0x804857e <main+45>    add    esp, 0x10
 ► 0x8048581 <main+48>    mov    eax, dword ptr [ebx - 4]      <0xf7fb75c0>
   0x8048587 <main+54>    mov    eax, dword ptr [eax]
   0x8048589 <main+56>    sub    esp, 8
   0x804858c <main+59>    push   0
   0x804858e <main+61>    push   eax
   0x804858f <main+62>    call   setbuf@plt                     <setbuf@plt>
──────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────
00:0000│ esp 0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
01:0004│     0xffffd1e4 ◂— 0x0
02:0008│ ebp 0xffffd1e8 ◂— 0x0
03:000c│     0xffffd1ec —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
04:0010│     0xffffd1f0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
05:0014│     0xffffd1f4 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
06:0018│     0xffffd1f8 ◂— 0x0
07:001c│     0xffffd1fc —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────
 ► f 0 0x8048581 main+48
   f 1 0xf7df7f21 __libc_start_main+241
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> n
24	in babystack.c
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────
*EAX  0xf7fb7d80 (_IO_2_1_stdout_) ◂— 0xfbad2087
 EBX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
*ECX  0xf7fb7dc7 (_IO_2_1_stdout_+71) ◂— 0xfb889000
*EDX  0xf7fb8890 (_IO_stdfile_1_lock) ◂— 0x0
 EDI  0x0
 ESI  0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
 EBP  0xffffd1e8 ◂— 0x0
 ESP  0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
*EIP  0x8048597 (main+70) ◂— sub    esp, 0xc
─────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]──────────────────────────────────────────────────────────────────────────────────────────
 ► 0x8048597 <main+70>     sub    esp, 0xc
   0x804859a <main+73>     lea    eax, [ebx - 0x1998]
   0x80485a0 <main+79>     push   eax
   0x80485a1 <main+80>     call   puts@plt                     <puts@plt>

   0x80485a6 <main+85>     add    esp, 0x10
   0x80485a9 <main+88>     call   vulnerable                     <vulnerable>

   0x80485ae <main+93>     sub    esp, 0xc
   0x80485b1 <main+96>     lea    eax, [ebx - 0x1974]
   0x80485b7 <main+102>    push   eax
   0x80485b8 <main+103>    call   puts@plt                     <puts@plt>

   0x80485bd <main+108>    add    esp, 0x10
──────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────
00:0000│ esp 0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
01:0004│     0xffffd1e4 ◂— 0x0
02:0008│ ebp 0xffffd1e8 ◂— 0x0
03:000c│     0xffffd1ec —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
04:0010│     0xffffd1f0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
05:0014│     0xffffd1f4 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
06:0018│     0xffffd1f8 ◂— 0x0
07:001c│     0xffffd1fc —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────
 ► f 0 0x8048597 main+70
   f 1 0xf7df7f21 __libc_start_main+241
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> 
Have you heard of buffer overflow?
25	in babystack.c
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────
*EAX  0x23
 EBX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
 ECX  0xf7fb7dc7 (_IO_2_1_stdout_+71) ◂— 0xfb88900a
 EDX  0xf7fb8890 (_IO_stdfile_1_lock) ◂— 0x0
 EDI  0x0
 ESI  0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
 EBP  0xffffd1e8 ◂— 0x0
 ESP  0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
*EIP  0x80485a9 (main+88) —▸ 0xffff48e8 ◂— 0x0
─────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]──────────────────────────────────────────────────────────────────────────────────────────
   0x8048597 <main+70>     sub    esp, 0xc
   0x804859a <main+73>     lea    eax, [ebx - 0x1998]
   0x80485a0 <main+79>     push   eax
   0x80485a1 <main+80>     call   puts@plt                     <puts@plt>

   0x80485a6 <main+85>     add    esp, 0x10
 ► 0x80485a9 <main+88>     call   vulnerable                     <vulnerable>

   0x80485ae <main+93>     sub    esp, 0xc
   0x80485b1 <main+96>     lea    eax, [ebx - 0x1974]
   0x80485b7 <main+102>    push   eax
   0x80485b8 <main+103>    call   puts@plt                     <puts@plt>

   0x80485bd <main+108>    add    esp, 0x10
──────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────
00:0000│ esp 0xffffd1e0 —▸ 0xffffd200 ◂— 0x1
01:0004│     0xffffd1e4 ◂— 0x0
02:0008│ ebp 0xffffd1e8 ◂— 0x0
03:000c│     0xffffd1ec —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
04:0010│     0xffffd1f0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
05:0014│     0xffffd1f4 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
06:0018│     0xffffd1f8 ◂— 0x0
07:001c│     0xffffd1fc —▸ 0xf7df7f21 (__libc_start_main+241) ◂— add    esp, 0x10
────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────
 ► f 0 0x80485a9 main+88
   f 1 0xf7df7f21 __libc_start_main+241
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> s
vulnerable () at babystack.c:12
12	in babystack.c
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────
*EAX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
 EBX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
 ECX  0xf7fb7dc7 (_IO_2_1_stdout_+71) ◂— 0xfb88900a
 EDX  0xf7fb8890 (_IO_stdfile_1_lock) ◂— 0x0
 EDI  0x0
 ESI  0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
*EBP  0xffffd1d8 —▸ 0xffffd1e8 ◂— 0x0
*ESP  0xffffd1c0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
*EIP  0x8048507 (vulnerable+17) ◂— sub    esp, 0xc
─────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]──────────────────────────────────────────────────────────────────────────────────────────
 ► 0x8048507 <vulnerable+17>    sub    esp, 0xc
   0x804850a <vulnerable+20>    lea    edx, [ebp - 0x10]
   0x804850d <vulnerable+23>    push   edx
   0x804850e <vulnerable+24>    mov    ebx, eax
   0x8048510 <vulnerable+26>    call   gets@plt                     <gets@plt>

   0x8048515 <vulnerable+31>    add    esp, 0x10
   0x8048518 <vulnerable+34>    mov    eax, 0
   0x804851d <vulnerable+39>    mov    ebx, dword ptr [ebp - 4]
   0x8048520 <vulnerable+42>    leave  
   0x8048521 <vulnerable+43>    ret    

   0x8048522 <get_shell>        push   ebp
──────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────
00:0000│ esp 0xffffd1c0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
01:0004│     0xffffd1c4 ◂— 0x0
02:0008│     0xffffd1c8 —▸ 0xffffd1e8 ◂— 0x0
03:000c│     0xffffd1cc —▸ 0x80485a6 (main+85) ◂— add    esp, 0x10
04:0010│     0xffffd1d0 —▸ 0x8048668 ◂— dec    eax /* 'Have you heard of buffer overflow?' */
05:0014│     0xffffd1d4 —▸ 0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
06:0018│ ebp 0xffffd1d8 —▸ 0xffffd1e8 ◂— 0x0
07:001c│     0xffffd1dc —▸ 0x80485ae (main+93) ◂— sub    esp, 0xc
────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────
 ► f 0 0x8048507 vulnerable+17
   f 1 0x80485ae main+93
   f 2 0xf7df7f21 __libc_start_main+241
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> n
aaaaaaaa
13	in babystack.c
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────
*EAX  0xffffd1c8 ◂— 'aaaaaaaa'
 EBX  0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
*ECX  0xf7fb75c0 (_IO_2_1_stdin_) ◂— 0xfbad208b
*EDX  0xf7fb889c (_IO_stdfile_0_lock) ◂— 0x0
 EDI  0x0
 ESI  0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
 EBP  0xffffd1d8 —▸ 0xffffd1e8 ◂— 0x0
 ESP  0xffffd1c0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
*EIP  0x8048518 (vulnerable+34) ◂— mov    eax, 0
─────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]──────────────────────────────────────────────────────────────────────────────────────────
   0x804850a <vulnerable+20>    lea    edx, [ebp - 0x10]
   0x804850d <vulnerable+23>    push   edx
   0x804850e <vulnerable+24>    mov    ebx, eax
   0x8048510 <vulnerable+26>    call   gets@plt                     <gets@plt>

   0x8048515 <vulnerable+31>    add    esp, 0x10
 ► 0x8048518 <vulnerable+34>    mov    eax, 0
   0x804851d <vulnerable+39>    mov    ebx, dword ptr [ebp - 4]
   0x8048520 <vulnerable+42>    leave  
   0x8048521 <vulnerable+43>    ret    
    ↓
   0x80485ae <main+93>          sub    esp, 0xc
   0x80485b1 <main+96>          lea    eax, [ebx - 0x1974]
──────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────
00:0000│ esp 0xffffd1c0 —▸ 0xf7fb7000 (_GLOBAL_OFFSET_TABLE_) ◂— 0x1d7d8c
01:0004│     0xffffd1c4 ◂— 0x0
02:0008│ eax 0xffffd1c8 ◂— 'aaaaaaaa'
03:000c│     0xffffd1cc ◂— 'aaaa'
04:0010│     0xffffd1d0 —▸ 0x8048600 (__libc_csu_init+32) ◂— dec    dword ptr [ebp - 0xfb7d]
05:0014│     0xffffd1d4 —▸ 0x804a000 (_GLOBAL_OFFSET_TABLE_) —▸ 0x8049f0c (_DYNAMIC) ◂— 0x1
06:0018│ ebp 0xffffd1d8 —▸ 0xffffd1e8 ◂— 0x0
07:001c│     0xffffd1dc —▸ 0x80485ae (main+93) ◂— sub    esp, 0xc
────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────
 ► f 0 0x8048518 vulnerable+34
   f 1 0x80485ae main+93
   f 2 0xf7df7f21 __libc_start_main+241
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> 

上一篇:JavaWeb学习笔记(八)—— EL表达式


下一篇:HDFS知识体系 思维导图