phpbugs代码审计基础详解

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

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

xxx.com/index.php?$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)其它相关文章!

<!--

-->

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

我要提问

相关标签:

php echo Integer NULL 字符串 number input

来源:编程网网

phpbugs代码审计基础详解-每日运维
收藏

phpbugs代码审计基础详解-每日运维
点赞

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

下一篇:没有了

phpbugs代码审计基础详解-每日运维
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
180

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
110

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维2
132

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维2
187

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维2
253

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
200

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
140

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
176

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
124

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

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

phpbugs代码审计基础详解-每日运维0
phpbugs代码审计基础详解-每日运维1
200

相关专题
更多>

  • phpbugs代码审计基础详解-每日运维
    php文件怎么打开
  • phpbugs代码审计基础详解-每日运维
    php怎么取出数组的前几个元素
  • phpbugs代码审计基础详解-每日运维
    php反序列化失败怎么办
  • phpbugs代码审计基础详解-每日运维
    php怎么连接mssql数据库
  • phpbugs代码审计基础详解-每日运维
    php连接mssql数据库的方法
  • phpbugs代码审计基础详解-每日运维
    html怎么上传
  • phpbugs代码审计基础详解-每日运维
    PHP出现乱码怎么解决
  • phpbugs代码审计基础详解-每日运维
    php怎么在浏览器运行