phpstorm+phpstudy 配置xdebug

前言 

        说到PHP代码审计, 我们可以通过简单的echo、print_r、var_dump函数来使我们更加清楚代码的作用,例如之前做的upload文件上传就可以通过这种方法进行代码审计(此处在文末:代码审计小技巧);可对于PHP新手来说仅仅通过这些简单的调试语句来定位并解决问题,还是相当有难度的,这里带来一个工具:xdebug,它作为一款专为PHP而诞生的代码调试工具,可以用来跟踪、调试和分析PHP程序的运行状况,对我们来说很有帮助!

这篇文章主要介绍和记录了在Windows中phpstorm和xdebug的安装配置和在phpstorm的配置调试和使用。

基础环境:PhpStorm 2020

                  Php7.3.4nts

                  Xdebug3.0.3

基础环境准备

1.phpstorm

PHPStorm 是 JetBrains 公司开发的一个轻量级且便捷的 PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。

安装:

打开phpstorm安装包

链接: 

https://pan.baidu.com/s/12GFIPS9vEf-MMDuWQrRMdQ 提取码: 8j4i

点击next,选择安装的目录点击next

选择如图的选项点击next,然后点击install

选择第二个选项,点击finish

这样就安装好了

如何调成中文版?

点击plugins,选择chinese (slmplifled)插件,安装,这样就变成中文版的了

2.phpstudy_pro

链接:

 https://pan.baidu.com/s/1sRq_HNViUGQwS7wl5-Vq5A 提取码: qmzf

创建网站

先开启如图所示的服务,点击左侧网站,点击创建网站

重启服务

ok!网站搭建成功

【----帮助安全学习,免费资源获取处----】
①18份渗透测试电子书
②安全攻防300页笔记
③30份安全攻防面试指南
④安全红队渗透工具包
⑤网络安全必备书籍
⑥99个漏洞实战案例

安装流程

Xdebug扩展安装详解

1、进入相应的 phpinfo 界面,在界面中 Ctrl+A 全选复制整个界面 (phpinfo) 的信息

2、打开网站 https://xdebug.org/wizard 会来到这样的一个界面,注意看图,具体步骤在图中

随后你会得到这样的一个界面

1、把复制到的信息粘贴入白色框

2、点击下方的 Analyse my phpinfo() output 按钮,即可获得以下信息

1、下载 php_xdebug-3.0.3-7.4-vc15-nts-x86_64.dll 文件(名字可能不一样)

2、把第一步下载的文件移动到 xdebug 网站步骤 2 给出的绝对路径中

3、打开网站步骤 3 中给出的绝对路径的文件

4、拉到 php.ini 文件的最下方,添加步骤 3 后面给出的文字(不要换行,就一排)

最后得到的 php.ini 文件像这样:

重启 Web 服务器后,打开 phpinfo 界面,你就会发现 Xdebug 模块已经启用了

但是注意观察,红框内的都是 Xdebug 的配置,你可以通过在 php.ini 的 [Xdebug] 模块下添加文字来更改这些默认配置,就像这样:

 https://xdebug.org/docs/all_settings  这个链接是官方对这些设置的详解,需要更改设置的可以去里面查阅

看不懂英文的可以使用谷歌翻译(整个网页一起翻的那个)

这里提供一份老版本的翻译,可能有误,这个 ; 号就是注释符

[Xdebug];zend_extension = php_xdebug.dllzend_extension=C:\phpstudy_pro\Extensions\php\php7.3.4nts\ext\php_xdebug-3.0.3-7.3-vc15-nts-x86_64.dll;是否开启自动跟踪xdebug.auto_trace= On;是否开启异常跟踪xdebug.show_exception_trace= On;是否开启远程调试自动启动;xdebug.remote_autostart= offxdebug.remote_autostart= On;是否开启远程调试;xdebug.remote_enable = Onxdebug.remote_enable= On;允许调试的客户端IPxdebug.remote_host = 127.0.0.1xdebug.remote_port=6666xdebug.client_port=6666;调试插件dbgpxdebug.remote_handler=dbgp;是否收集变量,phpstudy默认关闭xdebug.collect_vars= On;是否收集返回值,phpstudy默认关闭xdebug.collect_return= On;是否收集参数,phpstudy默认关闭xdebug.collect_params= On;是否开启调试内容,phpstudy默认关闭xdebug.profiler_enable=On;跟踪输出路径xdebug.trace_output_dir=“C:\phpstudy_pro\Extensions\tmp\xdebug”;调试输出路径xdebug.profiler_output_dir=“C:\phpstudy_pro\Extensions\tmp\xdebug”xdebug.idekey=“PHPSTORM”xdebug.mode=debug

方法二(懒人):

进入 phpStudy 的软件管理界面

最后点击确认完成更改,去 phpinfo 界面查看,你就发现 Xdebug 安装好了

这里的 php.ini 里面有一部分 phpStudy 自动帮你添加的配置,需要增加和更改的话和上面的操作步骤一致

phpstorm配置

1.在安装好xdebug扩展,并正确配置php.ini文件的条件下,打开phpstorm应用,找到设置界面(或者Ctrl+Alt+S)

2.找到语言和框架下的php,再找到其中的调试。将调试端口改为与php.ini中的一致,否则将无法成功配置。

3.打开服务器设置,并新建一个服务器,设置如下。

4.切换到php下,将php语言级别换成网页的php版本(例如5.4,7.3)

5.在此页面下还需要添加CLI解释器,在php可执行文件中找到刚刚phpstudy_pro中的php.exe(注意要在当前php版本下的php.exe),刷新会出现类似以下界面。

6.配置调试下的DBGp代理。

7.添加配置,选中PHP Web 页面,点击验证,更改脚本路径,并且一定要确保信息界面的要求是全通过即全是绿色的钩,以下有两个我所遇到问题的修改方法。(注意每次修改php.ini都需要保存并且重启web服务)

8.回到主页面,xdebug配置成功

9.打开网页xdebug插件设置

10.最后进行实例测试,打开网页测试脚本,并打开网页xdebug插件,在上传文件之前在phpstorm中的php脚本中添加一个断点,然后运行脚本,按F7向下运行代码,可以清楚的看到变量的变化

代码审计小技巧

    1.我们在进行代码审计时,如果代码比较长就会导致我们审计比较困难,接下来会给大家介绍一个代码审计的小技巧,让我们代码审计更加简单方便(下面以upload-lab文件上传第11关作为举例)。

    2.进入到我们的upload-lab靶机的第11关,我们可以在这里获取到我们上传页面的关键源码,此时如果我们读我们的源码,会比较困难,因为有些变量的具体意思比较难理解,因此我们第一步可以先把这个上传页面的关键源码拷贝一份到本地

3.这里我们首先新建一个php文件,然后我们把我们在upload-lab第十一关的源码复制粘贴到我们的test.php(这里我们用phpstorm工具来对源码进行编辑),这里需要注意的是,upload-lab第十一关的源码并不是完整的源码,需要我们补足一些他所需要的其他html代码,我们这里直接上图来解释我们的代码

<html><meta charset="utf-8">   //这里是设置我们的编码<h3>上传区</h3>   <form action="?save_path=../upload/" enctype="multipart/form-data" method="post">  //一个form标签,以post方式传输    <p>请选择要上传的图片:</p>    <input class="input_file" type="file" name="upload_file"/> //一个input标签,是用来进行文件上传    <input class="button" type="submit" name="submit" value="上传"/> //一个input标签,用来提交我们选择上传的文件</form><?php$is_upload = false;  $msg = null;if(isset($_POST['submit'])){    //检测submit变量是否已设置$ext_arr = array('jpg','png','gif');  //上传文件的拓展名的白名单列表$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);  if(in_array($file_ext,$ext_arr)){$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;   //给上传的文件用新的名字保存到新的地址if(move_uploaded_file($temp_file,$img_path)){$is_upload = true;} else {$msg = "上传失败";}} else {$msg = "只允许上传.jpg|.png|.gif类型文件!";}echo '上传的文件目录是'.$img_path;  echo '上传文件的类型是'.$file_ext;}?></html>

4.我们的技巧便是利用php对变量的输出,来判断该变量的具体意义,比如我们不了解$img_path和$file_ext变量代表着什么,我们可以利用echo对$img_path和$file_ext进行输出(当然我这里是事先知道我们变量 所代表的含义才用了文件来表示),利用我们的输出以及对代码初步的理解,来进行我们的代码审计工作

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
本地环境的搭建和配置是进行开发工作的基础,以下是xampp、phpstormxdebug和chrome的配置和断点调试的步骤: 1. 安装和配置XAMPP: - 下载并安装XAMPP,它是一个集成了Apache、MySQL和PHP的开发环境。 - 打开XAMPP控制面板,启动Apache和MySQL服务。 - 在浏览器地址栏输入localhost,确认XAMPP是否正常运行。 2. 安装和配置PHPStorm: - 下载并安装PHPStorm集成开发环境。 - 打开PHPStorm,创建或导入你的项目。 - 在设置中的PHP选项中配置PHP可执行程序路径,选择XAMPP中的php.exe文件。 - 配置项目的运行/debug配置,选择Xdebug作为调试引擎。 3. 配置Xdebug: - 打开xampp\php\php.ini文件,在文件末尾添加以下代码: ``` [Xdebug] zend_extension = path_to_xampp\php\ext\php_xdebug.dll xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = localhost xdebug.remote_port = 9000 ``` 4. 配置Chrome浏览器: - 在Chrome浏览器中安装Xdebug Helper插件。 - 点击插件图标,选择设置,将IDE Key设置为PHPStorm。 - 启用Xdebug Helper插件,并确保它为绿色以表示调试已启动。 5. 调试代码: - 在PHPStorm中设置断点,可以通过点击代码行号来设置断点。 - 在Chrome浏览器中访问你的网页应用。 - 当代码运行到断点处时,PHPStorm会自动跳转到调试模式并在IDE中显示当前状态。 - 你可以使用PHPStorm的调试工具栏来控制代码的执行、查看变量的值以及观察程序的执行流程。 通过以上步骤,你可以在本地环境中使用XAMPP、PHPStormXdebug和Chrome进行代码的断点调试。你可以设置断点、监控变量的值,以及通过PHPStorm的调试工具栏控制代码的执行流程,这将有助于你更有效地调试和排除代码中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值