error_reporting()函数用法

首先要知道error_reporting()函数是用来设置错误级别并返回当前级别的。它有14个错误级别,如下:

1        E_ERROR          致命的运行时错误。 错误无法恢复过来。脚本的执行被暂停
2        E_WARNING        非致命的运行时错误。 脚本的执行不会停止
4        E_PARSE          编译时解析错误。解析错误应该只由分析器生成
8        E_NOTICE         运行时间的通知。
16       E_CORE_ERROR     在PHP启动时的致命错误。这就好比一个在PHP核心的E_ERROR
32       E_CORE_WARNING   在PHP启动时的非致命的错误。这就好比一个在PHP核心E_WARNING警告
64       E_COMPILE_ERROR  致命的编译时错误。 这就像由Zend脚本引擎生成了一个E_ERROR
128      E_COMPILE_WARNING 非致命的编译时错误,由Zend脚本引擎生成了一个E_WARNING警告
256      E_USER_ERROR     致命的用户生成的错误。
512      E_USER_WARNING   非致命的用户生成的警告。 
1024     E_USER_NOTICE    用户生成的通知。
2048     E_STRICT         运行时间的通知。

4096     E_RECOVERABLE_ERROR 捕捉致命的错误。

8191     E_ALL来         所有的错误和警告。

好像php默认是不开启错误的,所以你需要配置php.ini文件:

将 display_errors = Off 改为display_errors = On 

另外还要配置错误级别:将

error_reporting = E_ALL     改为:

error_reporting = E_ALL & ~E_NOTICE

应为php默认是显示所有错误的,而有些无害的提示我们不需要显示,所以设置如上!

也可以在php代码运用如下:

 

<?php

/*

*Author:chenyongze 

*Email:saphire.php@gmail.com

*/

//禁用错误报告,也就是不显示错误
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);
?>

转载于:https://www.cnblogs.com/php-code/p/3461660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一道比较典型的 PHP 代码审计与漏洞利用题目。根据题目描述,我们需要构造一个长度不大于13的payload,然后获取webshell。 首先来分析一下这段代码: 1. error_reporting(0); :禁止输出 PHP 错误信息。 2. highlight_file(FILE); :将代码高亮输出。 3. if (isset($_GET['debug'])) { // disable function phpinfo(); exit; } :当存在 GET 参数 debug 时,禁止 phpinfo 函数的执行,直接结束程序。 4. function count_string_char($str) { ... } :定义了一个函数,用于计算字符串中有多少个不同的字符。 5. if (isset($_POST['cmd']) { ... } :当存在 POST 参数 cmd 时,执行后续操作。 从代码中可以看出,存在一个可以执行任意命令的漏洞。我们需要构造一个payload,让服务器执行我们的命令,然后获取webshell。 首先,我们需要使用 POST 方法提交命令。由于存在字符串去重的处理,我们需要避免重复字符。因此,我们选择使用数字0-9和字母a-f组成的16进制字符串,避免重复字符的同时,也能够满足我们的需求。 接下来,我们需要构造一个命令,来获取webshell。由于此处的命令执行函数没有被禁用,我们可以使用反弹shell的方法,将一个绑定了反弹shell的命令提交到服务器上,从而获取webshell。 最终,我们可以构造出如下payload: ```php <?php system($_GET['cmd']); ?> ``` 将其编码成16进制字符串,再使用POST方法提交到服务器上,即可获取webshell。完整payload如下: ``` cmd=73797374656d28245f4745545b27636d64275d293b&submit=Submit ``` 其中,cmd参数对应的值为system($_GET['cmd']);的16进制表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值