北京湿疹医院哪个好 http://pf.39.net/bdfyy/bdfrczy/210405/8814564.html一、前言
近日公司进了一批摄像头,以前还没有做过这方面的研究所以找了一个vivotek年的栈溢出漏洞拿来练练手。
二、固件仿真
虚拟机环境:Ubuntu20.04
gdb版本:GNUgdb(Ubuntu9.2-0ubuntu1~20.04.1)9.2
固件下载 ①网安学习成长路径思维导图
②60+网安经典常用工具包
③+SRC漏洞分析报告
④+网安攻防实战技术电子书
⑤最权威CISSP认证考试指南+题库 ⑥超页CTF实战技巧手册
⑦最新网安大厂面试题合集(含答案)
⑧APP客户端安全检测指南(安卓+IOS)
三、漏洞分析
我们根据poc来验证漏洞
echo-en"POST/cgi-bin/admin/upgrade.cgiHTTP/1.0\nContent-Length:AAAAAAAAAAAAAAAAAAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIXXXX\n\r\n\r\n"
netcat-v.0.0.
验证成功,可以看到程序崩溃信息。我们根据poc可以了解到漏洞是在Content-Length中出现的,从IDA中搜索字符串然后查看交叉引用定位到漏洞位置所在
根据反汇编的代码我们可以了解到,程序在处理Content-Length字符串的内容时,使用strncpy函数保存从`:`到`\n`之间的字符串,但是可以看到其中并没有对长度进行检测导致了用户可以输入任意长度的字符串造成栈溢出。
四、漏洞复现
在arm的栈溢出中,我们首要考虑的就是如何劫持pc寄存器,而这个偏移可以通过动调获得。
看一下保护,开启了NX保护所以无法利用shellcode,考虑使用ROP来绕过NX保护。
为了能够查看程序的执行流程,这里选择将文件系统和gdbserver一起传到qemu虚拟机里,下面的内容根据[driverxdw](