PHPStorm+PHPStudy调试配置


0x01 简述

记录代码审计基础中调试环境的配置,主要使用PHPStudy作为服务器,PHPStorm作为开发调试工具,并配置远程调试和本地调试两种方案。远程调试的优点是不需要本地有PHP环境,缺点是需要修改文件时要同步文件修改到远程;本地调试比较方便快捷一些,但是有时候会遇到BlueTeam代码投毒,审计调试的时候主机被控制。这里对两种调试配置方法进行记录。

0x02 远程调试配置

使用PHPStudy + PHPStorm远程调试,不用在本地安装PHP环境,不用web服务器,代码执行都交给远程服务器,配置下列项目即可:
远程服务器,PHPSdtudy配置:

  1. 开启FTP服务,目录设置为Web目录,用来同步PHPStorm对文件的修改
  2. php配置开启Xdebug插件

本地PHPStorm配置

  1. PHP远程调试
  2. PHP Web页面

PHPSdtudy开启FTP

在FTP选项里配置好用户名和密码,根目录设置为WEB目录

PHP开启Xdebug

在Phpstudy菜单软件管理-PHP-设置-扩展组件-Xdebug中设置,选择启用即可:

查看配置文件:

在WEB下新建个index.php,写入<?php phpinfo();?>,然后访问发现Xdebug已启用:

接下来把远程调试开启,需要PHPStorm主机的IP地址(我这里是192.168.200.32),并开启远程调试:

然后重启nginx服务器,接下来就可以配置PHPStorm了。

PHPStorm远程调试配置

远程配置涉及到到代码文件的同步,Web页面的显示,远程调试接口的配置。
PHP远程调试
首先配置远程调试,这里配置其一是服务器Xdeug扩展,二是本地的文件怎么同步到远程。因为本地在文件中添加了语句,需要同步到远程服务器执行才能看到效果,在菜单:运行-编辑配置-PHP远程调试中:

接下来配置部署服务器,部署就是需要将本地文件上传到远程服务器,就是上传到FTP中:

到这里添加一个FTP服务的连接即可,根路径就是FTP的根路径:

然后在配置映射,即为本地要传到远程的路径:

配置好后点击验证,这一步已经配置好文件同步和远程调试功能了:

由于我们需要实时修改文件,所以在<执行前>这个选项中配置一下同步,选择将文件上传到远程主机,配置下要上传的路径即可:

PHP Web页面
这里主要是为了在浏览器中显示执行效果,配置本地浏览器要访问远程URL,触发PHP执行,在菜单运行-编辑配置-PHPWeb页面添加:

配置好远程服务器(文件-设置-PHP-服务器):

配置完成后,可以尝试调试查看效果,选择调试,这里先试试Web页面的,选择了Web的配置,点击Run后,打开了浏览器,并成功命中断点,输出$_SERVER信息,这里的Run每次都会打开浏览器访问URL输出,所以打开窗口后刷新页面即可不用再点Run:

打开了浏览器后,就可以选择远程调试的配置了,点击调试按钮:

刷新刚才的浏览器页面,命中断点:

如果对文件进行了更新,需要再次点击Debug按钮,对传入参数进行调试:

到这里远程调试的环境就配置好了。

0x03 本地调试配置

本地调试的效果是可以在PHPStorm中运行、调试脚本,也可以配合浏览器运行、调试,参考上面远程调试的配置,开启PHPstudy的Xdebug配置,然后配置好PHPStorm。

PHPStorm调试配置

这里的配置是为了在PHPStorm里运行脚本,在运行-编辑配置-PHP脚本中配置好项目入口文件,php解释器二进制文件的位置即可:

执行和调试效果都会在PHPStorm中输出:

浏览器插件调试

在浏览器中使用Xdebug helper插件和 PHPStorm进行调试,这里要设置PHPStorm调试的监听端口,PHPStorm的服务器配置,Xdebug helper的Cookie。
1.PHPStorm中调试端口配置(文件-设置-调试)

这里注意端口会被php-cgi占用,所以把phpstorm监听的端口改成了9100:

相应的在php配置文件也进行了更新:

2.PHPStorm服务器配置(文件-设置-服务器):
配置好本地服务器的路径即可

3.Xdebug helper插件配置
到谷歌商店下载Xdebug helper

设置Xdebug helper的PhpStorm Cookie(插件显示在扩展栏上,右键选项):

访问可以看到Cookie:

在代码中设置设置断点,刷新浏览器即可看到调试效果:

0x04 总结

通过对PHP的调试配置,熟悉了PHPStorm和PHPStudy的配置,并成功实现了本地和远程两种调试的配置方法,一般来说在代码安全的情况下,选择本地调试方案比较方便。


文章作者: YangHao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YangHao !
评论
 上一篇
CobaltStrike流量伪装与安全配置 CobaltStrike流量伪装与安全配置
在个人实践中摸索实践中学习CobaltStrike的使用,针对CobaltStrike的流量隐藏进行了研究,主要涉及到Cloudflare的CDN配置、Nginx的反向代理以及profile的使用。分析解决在之前的实践过程中遇到的问题,弥补解决方案的不足点。
2021-08-19
下一篇 
Cobalt Strike插件之CVE-2020-0796提权脚本开发 Cobalt Strike插件之CVE-2020-0796提权脚本开发
通过Poc代码开发Cobalt Strike的CVE-2020-0796本地提权插件,熟悉了大概方法和原理。过程中遇到了很多问题,最后总算是解决了。
2021-04-22
  目录