背景
我们在进行代码审计的时候遇到复杂的代码从静态一下子看不出来就需要动态调试。我前面的文章也说了。遇到一个骚扰广告那个站点就是thinkphp开发的不过我喜欢静态和输出语句进行审计。没有进行动态调试。哪个审计出一个day配合进入后台从同ip网站间接拿下目标网站。后续等有时间出个文章写写吧。今天主要讲的是动态调试
准备过程
第一步:下载vscode,52破解分享的下载链接
下载以后打开vscode 在商店里面搜索xdebug。我安卓的是1.14版本
安装好以后我们需要使用vscode打开要调试网站的目录并且在根目录创建一个文件内容为phpinfo();然后访问这个文件输出phpinfo内容
把phpinfo 输出的所有内容复制到这个网站上面 https://xdebug.org/wizard.php 记住是phpinfo输出的全部内容所有内容。
分析结果如下:
1:下载 php_xdebug-3.1.6-7.3-vc15-nts-x86_64.dll
2:把下载好的dll文件复制到 E:\debugphp\Extensions\php\php7.3.4nts\ext
3:然后在 E:\debugphp\Extensions\php\php7.3.4nts\php.ini 加入一行
zend_extension = xdebug
4:然后重启web服务器
我们来操作
重命名的时候发现有php_xdeg我们可以把原来的搞个备份看看
重启一下网站。我看再次在phpinfo页面检测xdebug这个
是否支持调试关键phpinfo显示了xdebug选项
我们在商店搜索一下php debug。我们的xdebug版本是3.x的。所以复制红框里面的去php.ini里面
所以我们在php.ini加入
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000
注意不同的xdebug 版本 输入的东西不一样。来到debug 图标然后创建launch.json文件
调试语言是php。注意这里要与php.ini里面配置的端口要一样。注意更改配置文件必须重启网站!!!!
我们来到后台登陆的代码处打上断点
然后点击开始在运行-启动调试出现下图状态说明开始调试了
我们用网页访问提交账号密码
我们再看vscode里面断住没有
但是没调试一会儿出现下面错误。这是因为apache 超时了。
我们如何来解决这个问题呢我查询了大量资料发现他们讲的都不太行。
https://maoshu.fun/articles/801.html
https://h.opdwz.cn/feeds/SQAxf2OEme
这下边的相对比较靠谱但是对于我们这里来说还是不太行。
https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
https://blog.csdn.net/qq_37482307/article/details/92236264
解决phpstudy apache调试出现超时的问题
我们来到phpino页面
在这里 Loaded Configuration File 搜索 E:/debugphp/Extensions/php/php7.3.4nts/
打开我们搜索到文件然后添加下面的东东
发现真正的配置文件打开然后加入下面配置
ProcessLifeTime 3600
FcgidIOTimeout 3600
FcgidConnectTimeout 3600
FcgidOutputBufferSize 128
FcgidMaxRequestsPerProcess 1000
FcgidMinProcessesPerClass 0
FcgidMaxRequestLen 268435456
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
IPCConnectTimeout 3600
IPCCommTimeout 3600
FcgidIdleTimeout 3600
FcgidBusyTimeout 60000
添加后的截图
杂谈:
光加上这两个配置只能维持8-10分钟以后直接超时:
IPCConnectTimeout 3000
IPCCommTimeout 3000
另外可以加上这个配置在php.ini里面(没啥大用处感觉)
max_execution_time=0
注意修改完配置文件必须要重启网站否则不生效。
总结
我们使用vscode 动态调试php 就说到了这里。说个比较切合实际的话这都公元2024年了学点编程吧。尤其是php这个入门代码审计的语言。另外python这个是入门写简单exp poc的东东建议学习一下。行了今天就说到这里下课。