代码审计之vscode xdebug动态调试php教程


背景

我们在进行代码审计的时候遇到复杂的代码从静态一下子看不出来就需要动态调试。我前面的文章也说了。遇到一个骚扰广告那个站点就是thinkphp开发的不过我喜欢静态和输出语句进行审计。没有进行动态调试。哪个审计出一个day配合进入后台从同ip网站间接拿下目标网站。后续等有时间出个文章写写吧。今天主要讲的是动态调试

准备过程

第一步:下载vscode,52破解分享的下载链接
vscode软件
下载以后打开vscode 在商店里面搜索xdebug。我安卓的是1.14版本
xdebug
安装好以后我们需要使用vscode打开要调试网站的目录并且在根目录创建一个文件内容为phpinfo();然后访问这个文件输出phpinfo内容
phpinfo
把phpinfo 输出的所有内容复制到这个网站上面 https://xdebug.org/wizard.php 记住是phpinfo输出的全部内容所有内容。
分析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选项
xdebug支持
我们在商店搜索一下php debug。我们的xdebug版本是3.x的。所以复制红框里面的去php.ini里面
xdebug调试插件版本
所以我们在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页面
phpinfo页面
在这里 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分钟了
杂谈:

光加上这两个配置只能维持8-10分钟以后直接超时:

IPCConnectTimeout 3000

IPCCommTimeout 3000

另外可以加上这个配置在php.ini里面(没啥大用处感觉)

max_execution_time=0


注意修改完配置文件必须要重启网站否则不生效。

总结

我们使用vscode 动态调试php 就说到了这里。说个比较切合实际的话这都公元2024年了学点编程吧。尤其是php这个入门代码审计的语言。另外python这个是入门写简单exp poc的东东建议学习一下。行了今天就说到这里下课。


文章作者: peiqiF4ck
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 peiqiF4ck !
  目录