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

sql注入之二次注入(sqlilabs-less24)

二阶注入(Second-Order Injection)是一种特殊的 SQL 注入攻击,通常发生在用户输入的数据首先被存储在数据库中,然后在后续的操作中被使用时,触发了注入漏洞。与传统的 SQL 注入(直接注入)不同,二阶注入并不会立即触发,而是需要等到数据再次被调用时才会执行。

二阶注入的工作原理

  1. 注入数据存储:攻击者将恶意的 SQL 注入代码作为普通数据输入存入数据库。由于在存储阶段数据库对输入数据进行了转义,直接注入的攻击无法生效。
  2. 二次调用触发:在某些情况下,应用程序会调用数据库中存储的数据,并将其拼接到另一条 SQL查询中执行。此时,原先存储的恶意代码将被解析,从而引发 SQL 注入。

示例:sqlilabs-less24(POST-Second Oder Injections Real treat-Stored Injections)

  1. 注册特殊用户:

访问注册页面,创建一个用户名为 admin’# 的用户,密码可设为任意值。
此时,数据库中会存储该用户名。
在这里插入图片描述

  1. 登录并修改密码:

使用刚才注册的用户 admin’# 登录系统。
登录成功后,进入修改密码页面。
在新密码字段中输入新的密码,提交修改请求。

在这里插入图片描述

  1. 分析 SQL 语句:
    在修改密码的过程中,应用程序可能执行如下 SQL 语句:
UPDATE users SET password='new_password' WHERE username='admin'#' AND password='current_password';

由于 # 在 SQL 中表示注释符号,实际执行的语句变为:

UPDATE users SET password='new_password' WHERE username='admin';

这意味着,数据库中用户名为 admin 的用户密码被修改为 new_password。

  1. 使用admin登录,验证成功:

使用用户名 admin 和新设置的密码登录系统,验证成功。
在这里插入图片描述

二阶注入的常见场景

  1. 用户信息存储:攻击者可以在注册时,在用户名或其他字段中插入恶意 SQL代码。之后,当管理员或系统在查询该用户数据时,恶意代码可能会执行。
  2. 应用日志记录:在记录日志时,存储了包含 SQL 注入代码的输入数据,可能在日志回溯或展示时引发 SQL 注入。
  3. 多步表单:有时用户提交的数据在多步骤的表单中传递,每一步都会使用数据库查询来验证或处理该数据。

防御二阶注入的建议

  1. 使用预处理语句:在所有 SQL 查询中使用预处理语句(Prepared Statements),避免直接拼接用户输入。
  2. 数据清理:在插入和读取数据时都进行严格的输入验证和转义,以确保不会执行恶意代码。
  3. 编码和解码:确保从数据库读取的数据没有被再次解码为 SQL 代码。
  4. 严格的权限控制:限制数据库用户的权限,确保即便存在 SQL 注入,攻击者的破坏性也受到限制。

总结

二阶注入相对隐蔽,因为其恶意代码不会在第一步直接执行,所以在开发和测试时,务必要考虑输入数据在不同阶段的调用方式,以避免此类攻击。

http://www.lryc.cn/news/486042.html

相关文章:

  • Android compose 软键盘 遮挡对话框中TextField 输入框
  • spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索
  • 【项目开发】分析六种常用软件架构
  • 算法和程序的区别
  • 用指针遍历数组
  • 《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性
  • 使用pip安装esp32的擦除、写入固件的esptool库
  • 传奇996_23——杀怪掉落,自动捡取,捡取动画
  • 【030】基于51单片机甲醛检测报警器【Proteus仿真+Keil程序+报告+原理图】
  • 微信小程序:vant组件库安装步骤
  • 处理namespace问题:Namespace not specified for AGP 8.0.0
  • C++(Qt)软件调试---内存分析工具Heob(26)
  • Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)
  • Flutter中的Material Theme完全指南:从入门到实战
  • Python 第三方库 PyQt5 的安装
  • CSS基础也要进行模电实验
  • 贴代码框架PasteForm特性介绍之markdown和richtext
  • 3D Gaussian Splatting 代码层理解之Part3
  • Ceph 中PG与PGP的概述
  • 已解决:spark代码中sqlContext.createDataframe空指针异常
  • flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例
  • 智慧建造-运用Trimble技术将梦幻水族馆变为现实【上海沪敖3D】
  • 【NOIP提高组】计算系数
  • IDEA部署AI代写插件
  • 【阅读记录-章节1】Build a Large Language Model (From Scratch)
  • 微服务day08
  • JAVA接入WebScoket行情接口
  • 使用Axios函数库进行网络请求的使用指南
  • Vue2+ElementUI:用计算属性实现搜索框功能
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!