gpt4 book ai didi

c - 返回 libc 查找指针

转载 作者:太空狗 更新时间:2023-10-29 16:41:22 26 4
gpt4 key购买 nike

对于软件安全类(class),我必须简单地回顾一下 libc 攻击。我设法制作了一个 perl 脚本,它在给定指向 system()、exit() 和/bin/sh 字符串的正确指针的情况下完成了攻击。我使用 gdb "p system"等找到了这些指针。现在我想通过编写一个在运行时查找 system() 和 exit() 的地址的 c 程序来使漏洞利用更加“动态”。我该怎么做呢?我尝试了“&system”,但这似乎根本没有给我正确的地址。

编辑:系统未启用 ASLR。

最佳答案

您可以使用 binutils - objdumpreadelf 轻松找到地址,但二进制文件实际上只是符号的地址使用。未使用的符号未与 libc 库链接。

假设你想破解 ls 命令:

objdump -d `which ls` | less

你会发现这个部分:

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>

现在你有了地址:0x402910exit() 函数的跳转地址(如果你尝试 printf( "%x\n", 退出);.

关于 systemls 没有使用这个符号,所以你不能通过这种方式访问​​它,因为它没有链接。

关于c - 返回 libc 查找指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20715022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com