0x01 简述
记录代码审计基础中调试环境的配置,主要使用PHPStudy作为服务器,PHPStorm作为开发调试工具,并配置远程调试和本地调试两种方案。远程调试的优点是不需要本地有PHP环境,缺点是需要修改文件时要同步文件修改到远程;本地调试比较方便快捷一些,但是有时候会遇到BlueTeam代码投毒,审计调试的时候主机被控制。这里对两种调试配置方法进行记录。
0x02 远程调试配置
使用PHPStudy + PHPStorm远程调试,不用在本地安装PHP环境,不用web服务器,代码执行都交给远程服务器,配置下列项目即可:
远程服务器,PHPSdtudy配置:
- 开启FTP服务,目录设置为Web目录,用来同步PHPStorm对文件的修改
- 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的配置,并成功实现了本地和远程两种调试的配置方法,一般来说在代码安全的情况下,选择本地调试方案比较方便。