暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

19 ereg()函数strpos() 函数用数组返回NULL绕过

digo8wx安全 2021-01-28
942

源码:

<?php

 

$flag="flag";

 

if(isset($_GET['password'])){

if(ereg("^[a-zA-Z0-9]+$",$_GET['password'])===FALSE)

echo'Youpasswordmustbealphanumeric';

elseif(strpos($_GET['password'],'--')!==FALSE)

die('Flag:'.$flag);

else

echo'Invalidpassword';

}

?>

 

函数释义:

 

strpos()函数查找字符串在另一字符串中第一次出现的位置,如果没有找到该字符串,则返回 false。

ereg正则函数,限制了输入必须要有数字

ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。搜索字母的字符是大小写敏感的。

 

两个函数都可以用数组进行绕过。

strpos()找的是字符串,那么传一个数组给它,strpos()出错返回null,null!==false,所以符合要求。ereg()在出错时返回的也是null,null!==false,所以符合要求。

 

代码分析:

获取flag条件

if(ereg("^[a-zA-Z0-9]+$",$_GET['password'])===FALSE)     不满足

 

elseif(strpos($_GET['password'],'--')!==FALSE      满足

 

解题过程:

 

数组绕过:

 

 

http://localhost:63342/php_bugs-master/19%20ereg()%E5%87%BD%E6%95%B0strpos()%20%E5%87%BD%E6%95%B0%E7%94%A8%E6%95%B0%E7%BB%84%E8%BF%94%E5%9B%9ENULL%E7%BB%95%E8%BF%87.php?password[]=

 

 

%00截断绕过:

 

http://localhost:63342/php_bugs-master/19%20ereg()%E5%87%BD%E6%95%B0strpos()%20%E5%87%BD%E6%95%B0%E7%94%A8%E6%95%B0%E7%BB%84%E8%BF%94%E5%9B%9ENULL%E7%BB%95%E8%BF%87.php?password=1%00--


参考链接:

https://github.com/bowu678/php_bugs


文章转载自digo8wx安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论