CVE-2018-5711理解与复现

写在前面

这个CVE复现起来很简单的,直接把Orange大大的两条指令在有漏洞的PHP版本上跑一下就可以看到效果了。

复现之后,大致看了一下代码,感觉没有太多收获…所以决定调试一下PHPgd 扩展的源代码,理解一下到底是怎么导致了这个漏洞点的产生。虽然期间踩了不少坑,但确实是一次不错的尝试。

PHP源码调试新技能get~

Window下PHP源码编译

这部分工作,主要参考了链接:

这中间遇到了很多坑点,在介绍过程中都会列出来。

准备工作

  1. 首先装好Visual Studio 2017 ,必须要装的是通用Windows平台开发使用C++的桌面开发 ,其它的不安装也可以。
    在这里插入图片描述

  2. 下载PHP-SDK 和 有漏洞的PHP 版本。我下载的版本分别是PHP-SDK 2.1.10-devPHP 7.1.10。(github上都有对应的项目,可以直接下载,前面提到的链接中都有写下载地址)

在这里插入图片描述

编译

  1. 进入到PHP-SDK 所在目录,我的操作系统是64位的,安装了Visual Stadio 2017 ,选择目录下的phpsdk-vc15-x64.bat 来编译。
  2. 在命令行中执行phpsdk-vc15-x64.bat,然后执行phpsdk_buildtree phpdev,之后会在PHP-SDK 所在目录中出现phpdev 文件夹。
  3. 将之前下载的php 源码整个文件夹拷贝到php-sdk/phpdev/vc15/x64/ 目录下。
  4. 进入php-src 目录,执行phpsdk_deps --update --branch master 命令,下载依赖关系组件(需要等待较长时间)。
  5. 运行buildconf.bat 生成configure 文件,执行命令configure --disable-all --enable-cli --with-gd --enable-debug ,这一步是要选择安装哪些组件,刚开始的时候,并没有好好看要这条指令是实现什么功能,导致后来没有gd 扩展。使用configure --help 指令可以查看添加某个扩展对应的参数是什么。
    这里要说一下,如果编译php 之后还想再添加一些新的扩展,可以通过单独编译一个扩展,或者重新编译php 实现。但是我查了很多,单独添加一个扩展的话,在Linux下可以使用phpize 实现,Windows 下的方法后来不想找了,所以选择了重新编译。
  6. configure 指令执行之后,再执行nmake 指令来编译php ,最终编译出来的可执行的二进制文件路径为
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值