-
-
[原创]dir-645 超长cookie栈溢出漏洞分析之qemu-system模式
-
发表于:
2021-1-10 13:41
21890
-
[原创]dir-645 超长cookie栈溢出漏洞分析之qemu-system模式
上一篇文章结尾提到了此漏洞也能用qemu-system模式复现成功,本篇就来填坑和开下一个坑
用到的环境和工具与上一篇文章用到的相同
qemu-system模式下的网络配置绝对算是一个巨坑,对于新手来说学习过程非常不友好,我的网卡名是“ens33”所以尖括号中的全都为“ens33”,配置命令如下
这一步主要需要注意tap的名称要和之前创建的tap接口名称一致,启动命令如下
文件传输命令如下(也可使用ftp上传)
自行创建conf文件并输入以下内容(注意修改内容中的IP地址):
然后需要将固件中需要用到的文件复制到系统目录下,先创建copy.sh文件,然后写入以下内容
执行copy.sh后使用浏览器访问
直接执行hedweg.cgi文件会出现如下错误
这是因为执行时缺少了环境变量,命令如下
再次执行hedweg.cgi依旧会报错
这是因为执行时缺少了post数据
从GitHub上下载gdbserver,找到对应的版本
gdbserver上传到qemu虚拟机后执行如下命令启动调试
此时的qemu虚拟机环境变量如下
cookie中对应的是使用patternLocOffset.py创建的超长字符串,用来判断溢出的偏移
我在调试至此时出现了玄学情况,溢出的sprintf函数不读取cookie
在sess_get_uid函数处下断,查看程序是否读到了cookie
cookie读取成功了,但是并没有传到sprintf函数中,此时我们设置一下REMOTE_ADDR这个环境变量并再次启动调试
读取成功了,但是依旧不明白为什么cookie溢出会读到remote_addr;尝试使用patternLocOffset测得溢出偏移,并获取libc基址
与上一篇一样用到ROP链版本的poc,代码如下:
如果在使用nc命令时遇到了如下错误,有两种方法解决此错误
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-1-10 17:06
被pureGavin编辑
,原因: 内容修改