ctf wiki ret2lib3

文章探讨了如何通过gots表中的数据来确定动态库的基地址,避免直接使用Elf文件信息。它提到了使用lib_func_addr减去obj.dump(func)来获取libase。此外,文章解释了为什么在某些情况下使用sendlineafter而非send,主要是为了避免干扰后续接收的数据。还讨论了gets函数的读取特性,并在GDB中调试找到第二次调用main函数的地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:

通过泄露gots表中的数据去判断动态库的基地址

libase = lib_func_addr - obj.dump(func)

注:不能直接用elf 去查看函数位置,因为查询的是plt处的func地址

LibcSearcher('__libc_start_main', libc_start_main_addr)

关于为什么第一次使用sendlineafter

由于直接发送会导致,接下来接收的字符串并不是我们所需要的字符串。可能接收到printf函数输出的字符串。

使用gdb.debug查看第二次调用main函数的地址:

为104:

关于为什么会使用sendline而不是send 由于gets 函数遇到\n停止读取。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值