歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 高級返回庫函數Exploit代碼實現(下)

高級返回庫函數Exploit代碼實現(下)

日期:2017/2/27 9:30:06   编辑:更多Linux
  9附件:README.code   代碼注解   准備好有缺陷的程序,進行編譯。   $ gcc -o vuln.omit -fomit-frame-pointer vuln.c   $ gcc -o vuln vuln.c   $ gcc -o pax pax.c   I. ex-move.c   ~~~~~~~~~~~~   ex-move.c代碼的前面部分預定義了一些象LIBC, STRCPY, MMAP, POPSTACK, POPNUM, PLAIN_RET, FRAMES 的常數,你可以根據系統的環境進行調整,注意:MMAP_START 不能改變     下面,我們來獲得這些我們需要的在代碼中預定義的常數。   1)LIBC   [nergal@behemoth pax]$ ldd ./vuln.omit(*通過ldd,我們可以獲得有缺陷函數vuln.omit調用的庫函數及其地址)   libc.so.6 => /lib/libc.so.6 (0x4001e000) /lib/ld-linux.so.2 (0x40000000)     2) STRCPY   [nergal@behemoth pax]$ objdump -T vuln.omit(*通過objdump的參數-T,我們可以得到vuln.omit的動態符號表( DST)   vuln.omit: file format elf32-i386(顯示文件格式)     動態符號表:   08048348 w DF *UND* 00000081 GLIBC_2.0 __register_frame_info   08048358 DF *UND* 0000010c GLIBC_2.0 getenv   08048368 w DF *UND* 000000ac GLIBC_2.0 __deregister_frame_info   08048378 DF *UND* 000000e0 GLIBC_2.0 __libc_start_main   08048388 w DF *UND* 00000091 GLIBC_2.1.3 __cxa_finalize   08048530 g DO .rodata 00000004 Base _IO_stdin_used   00000000 w D *UND* 00000000 __gmon_start__   08048398 DF *UND* 00000030 GLIBC_2.0 strcpy   ~~~~~~~~(得到調用strcpy函數的地址)     3) MMAP   [nergal@behemoth pax]$ objdump -T /lib/libc.so.6 grep mmap(*從庫函數DST中找到mmap地址)   000daf10 w DF .text 0000003a GLIBC_2.0 mmap



Copyright © Linux教程網 All Rights Reserved