当前位置: 首页 > article >正文

SQL注入--堆叠注入

一.基本概念

堆叠注入概念:在 SQL 中, 分号(;) 是用来表示一条 sql 语句的结束。 试想一下我们在 ; 结束一个 sql语句后继续构造下一条语句, 会不会一起执行? 因此这个想法也就造就了堆叠注入。

二.堆叠注入和联合注入的区别

  • 区别

    • 联合注入:union或者 union all 执行的语句类型是有限的,可以用来执行查询语句。
    • 堆叠注入:可以执行任意的语句(增删改查)。

三.使用条件

堆叠注入的使用条件十分有限,其可能受到API或者数据库引擎,又或者权限的限制只有当调用数据库函数支持执行多条sql语句时才能够使用,利用mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行。

简单总结:

  1. 目标存在sql注入漏洞
  2. 目标未对";"号进行过滤
  3. 目标查询数据库信息时可同时执行多条sql语句

堆叠注入的局限性:

  • 堆叠注入并不是在每种情况下都能使用的。大多数时候,因为API或数据库引擎的不支持,堆叠注入都无法实现。

四.靶场示例

靶场:sqli-labs less 38

  1. 经测试,注入类型为字符型,闭合方式为单引号

    • ?id=1
      ?id=1daw
      ?id=1daw'


  2. 经过测试存在union联合注入,然后尝试堆叠注入将id为1的用户密码改成123,可以配合联合查询来判断sql是否执行。

    • ?id=1' ;update users set password=123 where id=1%23
      
  3. 然后再次查询id为1的用户时发现password信息已被修改,说明目标存在堆叠注入。​


http://www.kler.cn/a/430657.html

相关文章:

  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • langchain使用FewShotPromptTemplate出现KeyError的解决方案
  • 探索多模态大语言模型(MLLMs)的推理能力
  • EsChatPro 接入国内 DeepSeek 大模型
  • 【C++ 基础】从C到C++有哪些变化
  • MimicBrush:智能图像编辑新宠,能否革新你的创意设计?
  • [漏洞挖掘与防护] 05.CVE-2018-12613:phpMyAdmin 4.8.1后台文件包含缺陷复现及防御措施
  • 【Java EE】Spring请求如何传递参数详解
  • Mac电脑钓鱼到拿下核心权限
  • GC常见垃圾回收算法,JVM分代模型
  • 鸿蒙手机文件目录
  • k8s配置Pod 优先级
  • Python爬虫——HTML中Xpath定位
  • 基于单片机控制的多功能智能语音风扇
  • 幼儿园学校养老院供电安全解决方案
  • MongoDB change stream实战
  • CAD C# 批量替换当前图中块
  • 使用go生成、识别二维码
  • 【GitHub分享】you-get项目
  • 断点续传【授权访问】
  • js后端开发之Next.js、Nuxt.js 与 Express.js
  • 在huggingface.co的Spaces中推理,得到错误:No space left on device
  • Docker多架构镜像构建踩坑记
  • AI Weekly『12月2-8日』:OpenAI发布发布满血版o1,Meta发布Llama 3.3模型!
  • 将yolo系列中的类别转为字典或者list
  • MongoDB靶场(手工注入)攻略