SQL注入读写文件

1. 读写文件的基本条件和使用

1.1 SQL注入文件读写

SQL注入有直接SQL注入,也有文件读写时的注入,后者的主要目的在于获取webshell或盗取重要文件。

1.2 文件读写的基本条件

  1. 当前用户权限对该文件可读。
  2. 文件在该服务器上。
  3. 路径完整。
  4. 文件大小小于max_sllowed_packet。
  5. 当前数据库用户有FILE权限,File_priv为yes
  6. secure_file_priv的值为空,如果值为某目录,那么就只能对该目录的文件进行操作。

在MySQL5.5.53中,File_priv默认为yes
SQL注入读写文件_第1张图片
SQL注入读写文件_第2张图片
My.ini配置文件中本没有max_allowed_packet这一项,可以通过添加来修改可读写文件大小,然后重启MySQL。
SQL注入读写文件_第3张图片
My.ini配置文件中也没有secure_file_priv这一项,默认为不允许读写磁盘中任何未知的文件,也就是说默认值为NULL。
SQL注入读写文件_第4张图片
可以通过在my.ini中添加secure_file_priv这一项来许可文件读写。
SQL注入读写文件_第5张图片
显示结果的意思是︰本地登录的root账户拥有所有数据库中所有表的所有权限。
在这里插入图片描述
如何给用户分配权限︰
grant权限on数据库.数据表to ‘用户’@‘主机名’;例︰给从所有主机登陆的any账户分配所有的权限grant all on . to ‘any’@’%’;
在这里插入图片描述
load_file,后面的路径可以是单引号、Ox、char转换的字符。这而记得路径中的斜杠是/而不是\。
SQL注入读写文件_第6张图片
outfile后面不能接Ox开头或者char转换以后的路径,只能是单引号路径。这个问题在php注入中更加麻烦,因为会自动将单引号转义成’,那么基本没的玩了。
outfile 一句话(经典): select ‘’ into outfile’D:/PHPnow-1.5.4/htdocs/index2.php’ ;
在这里插入图片描述
关于/和\,读文件时只能用/,写文件时两者都可以。但是写文件时,如果用了\,MySQL会自动去除一个l,因此需要写成\才行。
SQL注入读写文件_第7张图片
into dumpfile它只能导出一行数据,并不常用,用于导出一条数据,通常写入第二条的时候出错,但第二条内容已被写入文件。
outfile函数可以导出多行,而dumpfile只能导出一行数据。
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式。
dumpfile适用于二进制文件,它会将目标文件吸入同一行内; outfile则更适用于文本文件。
在这里插入图片描述

2. SQLserver读写文件简单介绍

2.1 读文件

在这里插入图片描述

2.2 写文件

SQL注入读写文件_第8张图片
文章参考哔哩哔哩奇安信网络安全培训视频

你可能感兴趣的:(网络安全学习,网络安全,sql)