搜索camara找到一个类似二进制漏洞文件(缓冲区溢出)
双击进来之后有一些简单的描述
下载到了有和没有漏洞的固件,用bindiff比较了一下,发现区别最大的函数
ghidra打开跳转到对应地址(L快捷键可以重命名变量,;(英文的分号)可以下注释)
可以看到,左边的补丁添加了一个local_414变量,最多拷贝7次,多了就会造成溢出
更多信息
进一步向上追踪,发现程序在这里调用漏洞函数。
FUN_00403804函数很简单,仅仅是判断字符串"public/getSysteminfo.cgi“
后面还有其他东西或者是只有”\0”或”?”也就是没有东西了。
应该是url的一部分
到这里已经知道了访问哪个url会调用漏洞函数。
接下来确定哪个字段的溢出
想要确定一个变量是什么就找什么地方用到了这个变量或者是什么时候定义了这个变量。在本层函数里没有找到有意义的对param_6的引用。
继续向上查找找到了param_6字段的值cgiQueryString
在URL后面紧跟着”?”的部分就叫cgiQueryString
总结
也就是说访问 http://127.0.0.1/public/getSysteminfo.cgi?a_b_c_…… 很多下划线就会造成溢出