关于buu warmup的深入理解

关于buu warmup的深入理解

打开页面,一个滑稽,查看源码,得到source.php,输入得到源码:

<?php //首先测试一下in_array()函数的绕过方法 //$str=["heel","zzy"]; //var_dump(in_array("heel?f",$str)); highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"];//检查白名单 if (! isset($page) || !is_string($page)) {//第0重检查:是否设置了该变量或者说是是字符串 echo "you can't see it"; return false; } if (in_array($page, $whitelist)) {//第一重检查:是否在白名单,返回为真,注意该静态方法中有多重检查,只要满足一个return真即可 return true; } $_page = mb_substr(//形同substr函数,加了前缀之后就可以识别中文了 $page, 0, mb_strpos($page . '?', '?')//strpos表示截取到第二个参数之前的位置,返回值为数字 ); if (in_array($_page, $whitelist)) {//第二重检查,经过裁剪的page是否在白名单 return true; } $_page = urldecode($page);//url解码 $_page = mb_substr(//梅开二度,再来一次 $_page, 0, mb_strpos($_page . '?', '?') ); if (in_array($_page, $whitelist)) {//又是一次熟悉的操作 return true;//看着像是经过第一次检查,但是最重要的是经过了url解码 } echo "you can't see it"; return false; } } if (! empty($_REQUEST['file'])//要求file不能为空 && is_string($_REQUEST['file'])//要求参数是字符串 && emmm::checkFile($_REQUEST['file'])//要求得通过这个静态的检查 ) { include $_REQUEST['file'];//如果通过了就包含文件 exit; } else { echo "
"; } ?>

是一道代码审计的题。将源码拷贝到本地进行分析。

这里主要运用了三个函数:

<?php //in_array函数漏洞 $arr=[1,2,3]; var_dump(in_array('1shell.php',$arr,true)); echo"<tbr>"; //mb_strpos函数说明 $str="hello world"; var_dump(mb_strpos($str,'w')); echo"<br>"; //mb_substr函数说明 var_dump(mb_substr($str,0,3)); ?>

首先这里主要运用了这三个函数,我就去查了下这三个函数是否存在漏洞

$in_array(我们要搜索的,目标字符串); 判断我们要搜索的内容是否在数组里

返回值:布尔类型的值

$mb_strpos(原始的字符串,目标字符串); 搜索第一次出现的位置

返回值:第一次出现的位置

$mb_substr(原始的字符串,起始位置,种植位置) 截取字符串

返回值:截取完毕后的字符串

对于in_array()函数,如果只有前两个参数

$arr=[1,2,3];

var_dump(in_array(“1”,$arr));

echo"&ltbr&gt";

对于这段代码,返回值是true,因为“1”==1 只比较值不比较类型,这里是弱类型比较

但如果加入第三个参数例如

var_dump(in_array(“1”,$arr,true)); ”1“!==1 这里就会返回false 因为会进行强类型比较,一个为字符串类型,一个为整数

这个函数的漏洞与PHP的弱类型比较一个道理比如说这里数组里有1-3,如果想传shell.php,就可以尝试1shell.php

对于第二个函数 m b s t r p o s ( ) 是 用 来 搜 索 字 符 串 出 现 的 位 置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值