本文为看雪论坛优秀文章
看雪论坛作者ID:混子1
一
前言
二
了解
三
分析
命令注入
doSystem函数是对system函数的二次封装,根据函数可以发现会执行var、v2和v4,这三个参数,但v2变量不可控,所以没办法利用,var和v4分别是admuser和admpass的值,可以利用。
栈溢出漏洞
发现只要v10不为0,进去后都会执行sprintf函数,造成栈溢出,而v10值取决于ip_ctl_carrules初始化成功与否,一般情况下肯定成功,所以一定会造成栈溢出。
有点出入,但出入不大,websDecode64应该是解密函数,第二个参数是l2tp_usrname值,第三个参数是l2tp_usrname的长度,所以第一个参数应该是存储解密后的内容,进一步查看websDecode64函数,发现是base64解密,并且对长度没有限制。
四
调试
直接运行goahead程序会挂,因为没有相应的配置文件,我们可以尝试调试,先用IDA在主函数打断点。
根据汇编和反汇编代码,在各个if里面查看是否有return,在里面有return的if全部打断点,直到web服务启动前的所有if,然后f4,跳转下一断点,如果跳转下一断点,调试结束,说明上一个if,需要修改值,最终需要修改的就是91行的setdefault和126行v19。
经过上面两个判断,最终就可以运行了。
后面登录,也是需要修改值才能登录成功,如果想要验证的漏洞的话,可以自己尝试一下。
看雪ID:混子1
https://bbs.pediy.com/user-home-964032.htm
看雪2022KCTF秋季赛官网:https://ctf.pediy.com/game-team_list-18-29.htm
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!
原文始发于微信公众号(看雪学苑):D-Link 漏洞挖掘