美文网首页
sqli-labs Less-5-6

sqli-labs Less-5-6

作者: jun123123 | 来源:发表于2019-10-08 17:38 被阅读0次
  • Less-5
    这题和前面都不太一样,没有将查询的数据回显。
    查询可知(百度),考察的是双查询/报错注入。
    首先测试id=1和id=0,发现存在时返回you are in,不存在时无回显:


    1.png
2.png
不会就查呗,查到一篇博客:https://mochazz.github.io/2017/09/23/Double_%20SQL_Injection/#0x01-%E5%8F%8C%E6%9F%A5%E8%AF%A2
看wp之后可以知道,本题是利用count函数()和group by语句,结合rand(),floor()产生查询错误,根据返回的mysql报错获取我们需要的信息。
这几种函数的用法,在上文给出的链接里有比较详细的介绍,同时有该查询错误产生的原因。
这里简单介绍,详情可戳上文链接
count()用于对查询结果进行计数,rand()用于生成一个[0,1)的随机数,floor()用于向下取整,group by用于对查询结果进行分组。
当使用count()函数和group by语句对查询结果进行分组计数时,数据库会建立虚拟表,当查询到的分组存在时则计数+1,不存在时则插入该组。当结合floor(rand()*2)时,由于floor(rand()*2)会且只会生成0或1,将生成的0/1和我们需要的信息拼接并作为分组依据,例如:
http://sqli-labs.whye.xyz/Less-5/?id=0' union select 1,count(*),concat((select database()),floor(rand()*2)) as a from information_schema.columns group by a %23
其中as a表示把concat((select database()),floor(rand()*2))查询结果取别名为a,便于group by进行分组。结果为:(由于随机数的原因,有的时候不会成功,多刷新几次就可)
3.png
可以看到,报错中出现字符串'security1',即为我们查询的database()值和随机数拼接的结果,可知数据库名为security。
原因:
若我们第一次生成的分组依据database()+floor(rand()*2)为'security1',发现虚拟表中不存在该分组,所以插入database()+floor(rand()*2)作为一个新的分组。注意插入时,rand()函数又被执行了一次,所以插入的结果不一定为'security1',也可能是'security0',假设插入了'security1'(security0)。若第二次生成的分组依据为'security0'(security1),此时虚拟表中无该分组,所以准备插入database()+floor(rand()*2),但此时rand()函数被重新执行,假设执行结果为'security1'(security0),由于虚拟表中已处在该分组,因此会产生报错,提示Duplicate entry 'security1' for key 'group_key'(重复的'group_key'键值'security1'),因为我们选择的分组依据为database()+floor(rand()*2),因此我们可以知道'group_key'键值'security1'即为database()+floor(rand()*2)的值,即数据库名database为security。
同理我们可以查询username和password(数据库名,表名,列名查询方式,将Less-1中的方式结合上面查security名的方式即可),构造url:
http://sqli-labs.whye.xyz/Less-5/?id=0' union select 1,count(*),concat((select username from users limit 0,1),floor(rand()*2)) as a from information_schema.columns group by a %23
4.png
成功查询username(同样可能不成功,刷新)。将username字段更换为password即可获取密码,其中的limit语句用于限制返回的结果,limit 0,1即为返回第一条结果。若希望获取其他用户username和password,更改limit x,1即可。
  • Less-6
    和Less-4类似,把Less-5中的单引号换成双引号即可

相关文章

网友评论

      本文标题:sqli-labs Less-5-6

      本文链接:https://www.haomeiwen.com/subject/qywbpctx.html