ciscn_2019_c_1 1
步骤:
先checksec,看一下开启了什么保护
可以看到开启了nx保护,然后把程序放入ida里面,观察程序代码
先shift+f12观察是否有system和binsh函数
发现没有system和binsh函数,所以我们考虑可以用libc泄露来做这道题
进入程序得主界面
在进入encrypt程序中按f5查看伪c代码
我们可以看到程序对输入得大小写和字符等进行了一个简单的加密,
注意if(v0>=strlen(s))可以跳出这个if循环
而strlen()函数的特性时读取到\0时会结束所以我们可以payload前以\0开头,从而绕过if加密
接下来我们判断需要溢出的字符数量
可以看到需要88个字符可以造成溢出,而\0站一个字符所以我们在加上87个a就可以造成溢出
由此构建我们的exp
完整exp如下
注意:在第一个payload中我们需要让程序获得libc后能继续返回到程序初,所以我们将返回地址设为了mian的地址
在第二个payload中,该程序在unbantu中的64位程序,所以我们还需要一个ret_addr来让payload保持栈对齐
本地和远程所获得的libc版本是不一样的,当本地失败后,远程试一下
成功获得 flag
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现