揭秘家用路由器0day漏洞挖掘技术读书笔记 D-Link DIR-645 authentication.cgi溢出漏洞分析

固件下载地址
漏洞描述如下。
这里写图片描述
上一篇讲了DIR-815 hedwig.cgi中的漏洞成因及利用方式,这一篇来讲DIR-645 authentication.cgi中的漏洞成因及利用方式。下载之后解压缩得到dir645_FW_103.bin,通过binwalk提取出文件系统。
这里写图片描述
这里写图片描述
需要分析的还是/htdocs/cgibin这个程序。我们根据POC使用下面的脚本直接进行动态调试。
这里写图片描述
我们在堆栈空间分配完毕后的地址0x40B024处下断点。因为溢出发生时总会覆盖saved ra,所以可以通过观察saved ra何时被覆盖来定位存在漏洞的函数。在0x40B500处的read函数调用后可以发现saved ra被覆盖。
这里写图片描述
这里写图片描述
继续执行到0x40A494处的getenv("HTTP_COOKIE")时程序就崩溃了。
这里写图片描述
点击OK之后程序停在异常地址,在lbu $v0, 0($a1)指令中a1被覆盖为0x41414141。
这里写图片描述
查看read函数之前的代码可以得到read函数此处用法为
read(fileno(stdin),var_430,atoi(getenv("CONTENT_LENGTH")); 由于没有判断CONTENT_LENGTH的长度因此造成了缓冲区溢出。
这里写图片描述
使用书中的patternLocOffset.py生成1160个字节的pattern string,并用下面的命令运行authentication.cgi。
这里写图片描述
在authenticationcgi_main的返回处0x40BCE0下断点,查看寄存器S0和RA。
这里写图片描述
再次使用patternLocOffset.py定位偏移。
这里写图片描述
因为DIR-815 1.01和DIR-645 1.03使用的libc.so.0动态库是一样的,所以关于ROP的选择可以参考前面的内容。
metasploit里面的payload

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值