-
-
[原创] PHP 7 漏洞挖掘系列之一:Stack-based integer overflow
-
发表于:
2017-4-11 18:17
7217
-
[原创] PHP 7 漏洞挖掘系列之一:Stack-based integer overflow
首先声明这些漏洞不是我挖的,我想挖但是挖不出来,蛋疼。本次讲解栈溢出漏洞,这个漏洞是比较常见的漏洞,现在php里面不太常见了,php漏洞挖掘没有啥好工具,只能人工慢慢的看,afl好像可以自动化挖掘,不过我跑了10几天也没跑出个crash。
包含漏洞的版本:PHP 7.0.11
首先下载源码http://php.net/releases/,然后编译安装,版本可以低一点,往后的漏洞这个版本都是没打补丁的。环境采用ubuntu和编译版本的php7.0.2,只有linux才有符号表,windows下不好调试,虽然方便的多。现在正式开始吧。
定位到漏洞函数代码 /ext/gd/gd.c:2222
有可能上面的代码长了点,但是只要找到关键函数就行了_php_image_create_from_string,在这个函数中的gdNewDynamicCtxEx这个函数才是关键点,跟踪进去就行了。在gd.c:2196行,假如你使用其他版本可能行号不一样,不过没事搜索函数就行了。
下面是几个结构体,可以对照着去理解代码。
下面是gdb的调试信息,不知道为什么参数的值没有显示出来。有些代码直接阅读比较麻烦,可以gdb调试代码,再调试的同时,打印出它的值。
poc就放下面了
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)