phpbugs代码审计基础详解


重要点为$shiyan==$content只要满足这个条件就可以获取flag。

首先extract()函数的作用为从数组将变量导入到当前符号表,也就是说我们如果构造

xxx.com/index.<strong>php</strong>?$shiyan=1则会生成一个名字为$shiyan的变量,值为1。

然后通过isset函数来判断刚生成的$shiyan变量是否为null,如果为null就进入判断。

$content变量则是通过file_get_contents函数和trim函数来读取文件,但是此时它所读取的文件$flag值为xxx,此时这个目录是不存在的,所以它的值为空。

所以我们此时要做的就是将$shiyan的值变为空即可。

所以构造链接xxx.com/index.php?$shiyan=&flag=1即可获得ctf{xxx}

phpbugs代码审计基础详解

php小编新一为您介绍phpbugs代 码审计基础详解。代码审计是指对程序代码的安全性进行评估与检测,以发现潜在的安全问题或漏洞。phpbugs是一套优秀的安全审计工具,具备强大的漏洞扫描和识别能力,可以快速发现代码中的漏洞,从而提高系统的安全性。本文将详细介绍phpbugs的使用方法和相关技巧,帮助读者更好地进行代码审计工作。

绕过过滤空白字符

 $value) { 
$value = trim($value);//trim — 去除字符串首尾处的空白字符(或者其他字符)
is_string($value) && $req[$key] = addslashes($value); // is_string — 检测变量是否是字符串,addslashes — 使用反斜线引用字符串
} 
} 
function is_palindrome_number($number) { 
$number = strval($number); //strval — 获取变量的字符串值
$i = 0; 
$j = strlen($number) - 1; //strlen — 获取字符串长度
while($i < $j) { 
if($number[$i] !== $number[$j]) { 
return false; 
} 
$i++; 
$j--; 
} 
return true; 
} 
if(is_numeric($_REQUEST['number'])) //is_numeric — 检测变量是否为数字或数字字符串 
{
 $info="sorry, you cann't input a number!";
}
elseif($req['number']!=strval(intval($req['number']))) //intval — 获取变量的整数值
{
 $info = "number must be equal to it's integer!! ";
}
else
{
 $value1 = intval($req["number"]);
 $value2 = intval(strrev($req["number"]));
 if($value1!=$value2){
$info="no, this is not a palindrome number!";
 }
 else
 {
if(is_palindrome_number($req["number"])){
$info = "nice! {$value1} is a palindrome number!"; 
}
else
{
 $info=$flag;
}
 }
}
echo $info;

根据代码判断,它需要满足多个条件才可以执行$info=$flag;之后echo出来的才是flag。

if(is_numeric($_REQUEST['number'])) //is_numeric — 检测变量是否为数字或数字字符串 
{
 $info="sorry, you cann't input a number!";
}

先来看看第一个条件,它要求number参数传入的内容不能为数字,否则返回sorry, you cann't input a number!

phpbugs代码审计基础详解

但是它的第二个要求为数字必须为整数,否则输出number must be equal to it's integer!!

elseif($req['number']!=strval(intval($req['number']))) //intval — 获取变量的整数值
{
 $info = "number must be equal to it's integer!! ";
} 

导致我们输入字符串也会报错

phpbugs代码审计基础详解

这里我们用到%00来绕过is_numeric函数的判断。

phpbugs代码审计基础详解

根据报错,再来看看$value1,它是$req["number"]的整数值,$value2则为反转之后的$req["number"]的整数值。

$value1 = intval($req["number"]);
$value2 = intval(strrev($req["number"]));
if($value1!=$value2){
$info="no, this is not a palindrome number!";
 }

所以第三步要满足的条件为,它必须为回文数即从左往右和从右往左读取都要相同的数值,所以我们构造如下

phpbugs代码审计基础详解

以上就是phpbugs代码审计基础详解的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

        &lt;!-- 

            <button type="button">
            没有解决问题?点击使用智能助手
            </button>

         --&gt;

                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230001650.png">

                    智能AI问答
                    每日运维网(www.mryunwei.com)智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。

                我要提问

相关标签:

                    php echo Integer NULL 字符串 number input                    

                            来源:编程网网

                                        <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002475.png">

收藏

                                        <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">

点赞

上一篇:Phar反序列化超详细介绍

下一篇:没有了

            <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002952.png">
            本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

            作者最新文章
  • 深入理解C语言中*和&的不同功能 2024-04-03 14:15:01
  • 如何在Go语言中使用面量? 2024-04-03 14:12:02
  • 《蛋仔派对》流星雨时间 2024-04-03 14:10:30
  • 心渊梦境手游地图真名解放 2024-04-03 14:10:19
  • 《射雕》手游游侠任务怎么做 2024-04-03 14:10:13
  • Go语言数据类型详解:基本数据类型概述 2024-04-03 14:09:01
  • phpbugs代码审计基础详解 2024-04-03 14:04:02
  • Phar反序列化超详细介绍 2024-04-03 14:02:02
  • 《射雕》画舫密室通关解密方法 2024-04-03 13:58:22
  • 龙之信条2巴达尔城怎么去 2024-04-03 13:58:04
            最新问题

                        Javascript - Mocha Chai单元测试无法运行
                        我正在与前端Web开发课程训练营合作开展一个项目,不幸的是,我们的教授无法回答我的这个问题。我有一个简单的战争纸牌游戏,需要两名玩家,然后玩26个回合,看看谁赢了。在这个游戏中我有...

P粉964682904来自于2024-04-02 14:52:19

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">180

                        内在小孩的过渡之火
                        这是最小的可重现示例。“切换”悬停的过渡结束正在触发(我不想要)并过早隐藏“a”。要在转换结束后重现单击切换。我意识到这种情况正在发生,因为切换位于a内部(我无法更改它)。有没有办...

P粉274161593来自于2024-04-02 14:38:29

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">110

                        mongodb 中的错误:“Route.post() 需要一个回调函数,但收到了一个”
                        这是我的主文件index.jstypehereconstexpress=require("express");constapp=express();requir...

P粉242535777来自于2024-04-02 14:46:18

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">2
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">132

                        当我在 localhost 中键入文件夹名称时如何首先显示登录系统的语法
                        不知道语法是什么?我想要发生的是,当我输入localhost/farm-e-mart时,第一个文件应该显示登录系统。我怎样才能做到这一点?

P粉351138462来自于2024-04-02 14:32:52

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">2
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">187

                        在同一页面上的多个位置显示库存计数器
                        这个脚本作为股票倒计时效果很好,但我无法在同一页面上超过1个位置显示它。例如,同一页面上有4或5个产品/计划,每个产品显示的库存数量不同,并且数量变化的时间也不同。仅在1个产品上显...

P粉038161873来自于2024-04-02 14:25:38

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">2
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">253

                        以2位小数显示SQL中的计算结果
                        我编写了一个简单的查询来查找两列的百分比,但我希望结果在只有两位小数的列中。这是我写的,但我遇到了错误,而且我似乎无法修复它。SELECTSmall_Bags,Total_Bags...

P粉055726146来自于2024-04-02 14:23:34

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">200

                        如何根据父元素高度自动调整子元素的上边距?
                        我在一次老的大学考试中遇到了问题。基本上它要求:获取这个json文件[{"colore":"#FF0080","pos_orizz...

P粉086993788来自于2024-04-02 13:49:19

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">140

                        下载作为 api 调用响应的 ZIP 文件
                        我有一个二进制zip文件作为api调用的响应。我想使用Javacript/React直接下载该zip文件。我怎样才能实现这个目标?

P粉034571623来自于2024-04-02 13:56:27

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">176

                        不合作布尔逻辑
                        我的网站遇到了一个问题,至少几周来我一直在努力解决这个问题,所以我希望有人能够指出我哪里出了问题。对于一些背景知识,我是一名应届毕业生,这是我为最终项目构建的顶点项目,在演示之前我...

P粉343141633来自于2024-04-02 13:34:26

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">124

                        LESS string-set 的现代等价物是什么
                        有关字符串集及其用途的示例,请参阅使用LESS字符串集属性和内容方法经过多次困惑,我发现这已经过时了,并且自Chrome版本39以来就没有实现过,尽管它显然在LESS中继续存在。教...

P粉993712159来自于2024-04-02 13:29:36

                                  <img src="https://img.mryunwei.com/uploads/2024/04/20240403230002579.png">0
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003652.png">1
                                <img src="https://img.mryunwei.com/uploads/2024/04/20240403230003851.png">200

                相关专题
                更多&gt;
  • php文件怎么打开
  • php怎么取出数组的前几个元素
  • php反序列化失败怎么办
  • php怎么连接mssql数据库
  • php连接mssql数据库的方法
  • html怎么上传
  • PHP出现乱码怎么解决
  • php怎么在浏览器运行