返回libc查找指针

mai*_*elm 12 c gdb

对于软件安全类,我必须简单地返回到libc攻击.我设法制作一个perl脚本,在给出system(),exit()和/ bin/sh字符串的正确指针的情况下完成攻击.我发现这些指针使用gdb"p system"等.现在我想通过编写在运行时找到system()和exit()的ad的程序来使这个漏洞更加"动态".我该怎么做呢?我试过"和系统",但这似乎并没有给我正确的地址.

编辑:系统未启用ASLR.

TMS*_*TMS 6

你可以很容易发现利用该地址binutils- objdump或者readelf,而是二元实际使用的符号的地址.未使用的符号未与libc库链接.

假设你想破解ls命令:

objdump -d `which ls` | less
Run Code Online (Sandbox Code Playgroud)

你会发现这个部分:

0000000000402910 <exit@plt>:
  402910:       ff 25 da 89 21 00       jmpq   *0x2189da(%rip)        # 61b2f0 <_fini+0x208704>
  402916:       68 5e 00 00 00          pushq  $0x5e
  40291b:       e9 00 fa ff ff          jmpq   402320 <_init+0x10>
Run Code Online (Sandbox Code Playgroud)

所以现在你有了地址:0x402910exit()函数的跳转地址(如果你试过的那个你会打印的地址)printf("%x\n", exit);.

关于system,ls不使用此符号,因此您无法以这种方式访问​​它,因为它没有链接.