PHP代码审计—环境搭建
0x00 前言
采用Phpstorm+Phpstudy+XDebug
相关链接:
Download PhpStorm: Lightning-Smart PHP IDE
小皮面板(phpstudy) - 让天下没有难配的服务器环境!
0x01 phpstudy配置
先添加一个网站
Xdebug配置
phpstudy默认自带Xdebug,找到对应版本的php设置里面打开即可,自己设置一个监听端口
0x02 PHPStorm配置
phpstorm配置php,选择phpstudy中使用的php路径
配置Xdebug,端口为之前 phpstudy 配置的端口,保持一致
DBGp Proxy配置
IDE key 和 php.ini 的xdebug的 idekey 一致,默认为 PHPSTORM
端口 和 设置的 xdebug 的 端口一致
Servers设置
调试器选xdebug
添加配置
新建php web page页面
验证连接
点击小电话 开始监听 以 调试
0x03 浏览器配置
浏览器插件商店 搜索xdebug helper 安装即可
Edge浏览器插件下载地址:
Xdebug helper - Microsoft Edge Addons
安装成功后右键进入扩展选项
在PHP的配置文件中对xdebug的设置需要特别注意,将xdebug.remote_autostart
设置为off
如果设置为on,则会忽略在浏览器中是选择Debug还是Disable,都会自动进行调试
;开启远程调试自动启动
xdebug.remote_autostart = Off
这样,xdebug helper就设置好了
0x04 遇到的问题
Phpstorm+XDEBUG调试的时候超时解决办法
在使用Phpstorm+XDEBUG进行调试过程中,分析会花费较长时间,
有的时候还没有调试完连接就已经断开,
这时候就需要重新进入调试或者在函数深处继续打断点
可以修改超时时间来解决问题,修改完记得重启服务。
方法一:
在 apache 配置文件 httpd.conf
中增加如下配置,将超时时间改大一点
Timeout 3600
FcgidIOTimeout 3600
FcgidIdleTimeout 3600
IPCConnectTimeout 3600
IPCCommTimeout 3600
方法二:
phpstudy 的话也可以在 vhosts.conf
里面的配置文件中加上几句代码增加两行代码
IPCConnectTimeout 300000
IPCCommTimeout 300000
如下
<VirtualHost _default_:80>
DocumentRoot "D:/phpstudy_pro/WWW"
FcgidInitialEnv PHPRC "D:/phpstudy_pro/Extensions/php/php5.6.9nts"
AddHandler fcgid-script .php
IPCConnectTimeout 300000
IPCCommTimeout 300000
FcgidWrapper "D:/phpstudy_pro/Extensions/php/php5.6.9nts/php-cgi.exe" .php
<Directory "D:/phpstudy_pro/WWW">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
DirectoryIndex index.php index.html
</Directory>
ErrorDocument 400 /error/400.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
ErrorDocument 501 /error/501.html
ErrorDocument 502 /error/502.html
ErrorDocument 503 /error/503.html
ErrorDocument 504 /error/504.html
ErrorDocument 505 /error/505.html
ErrorDocument 506 /error/506.html
ErrorDocument 507 /error/507.html
ErrorDocument 510 /error/510.html
</VirtualHost>
方法三:
php.ini 增加 修改如下配置
xdebug.remote_cookie_expire_time = 3600
max_execution_time=3600
max_input_time=3600
default_socket_timeout = 3600