get_started_3dsctf_2016 1
2024-09-07 06:48:01
拿到题目,依旧还是老样子,查看程序开启的保护和位数
可以看到程序开启了nx保护是32位程序,于是我们把程序放入ida32编译一下
一打开就能看到非常明显的get_flag这个程序,f5观察伪代码
当a1和a1都等于相应的值后就可以获取到flag,再查看main函数
gets存在明显的栈溢出
我刚开始想的是直接在ret处用 v2 = fopen("flag.txt", "rt")的地址覆盖,后来发现远程链接不能获取到flag,所以只好用别的办法
观察汇编代码可以看到,程序将308cd64fh和195719d1h处的值进行比较,所以这俩个地址就是a1和a2的值所以我们可以在ret函数用get_flag的地址覆盖,然后传递上这俩个参数也可以获得flag
完整的exp如下:
注意:0x0804e6a0是程序exit的地址,只有程序能够正常退出才能正确的回显flag(远程感谢一下get_started_3dsctf_2016 - 不会修电脑 - 博客园 (cnblogs.com))
还有第三种方法是通过mprotect函数赋给权限,不过我暂时并未尝试(还是我又菜又懒....)
结束
最新文章
- Github .gitignore详解
- Java将文件转为字节数组
- PLL输出怎么不能配置成我想要的时钟
- 12天学好C语言——记录我的C语言学习之路(Day 8)
- UIApplication sharedApplication 的常用使用方法-b
- python导入matplotlib模块出错
- 解决Agent admitted failure to sign using the kye with ssh
- 配置Apacheserver
- 【Time系列三】简单的计时器(秒表)
- js变量的生命周期
- Typora - Markdown 语法说明
- strlen strcat strcpy strcmp 自己实现
- shell 脚本部分变量含义
- centos 安装 和 linux 简单命令
- Win10系列:JavaScript动画2
- java使用代理模拟http get请求
- 采用redis 主从架构的原因
- 【转】Twitter Storm: 在生产集群上运行topology
- Java+FlashWavRecorder实现网页录音并上传
- Codeforces768C Jon Snow and his Favourite Number 2017-02-21 22:24 130人阅读 评论(0) 收藏