sql注入——二次注入

二次注入

      • 简介
      • 工具环境
      • 具体实施

简介

二次注入是一种较为隐蔽的 SQL 注入攻击方式。它并非直接在输入时进行攻击,而是先将恶意数据存储到数据库中,这些数据看似正常。随后,应用程序在后续的操作中,再次使用或处理这些之前存储的恶意数据时,未进行充分的过滤和验证,导致恶意数据被解释为可执行的 SQL 语句,从而引发安全漏洞。例如,用户注册时输入看似合法的用户名,之后在修改密码等操作中,系统未正确处理该用户名,使得攻击者能够篡改数据库中的数据。二次注入攻击具有很强的迷惑性,对数据库安全构成严重威胁,需要开发人员高度重视并采取有效的防护措施。

为了更方便理解和直观明白什么是二次注入这里借助2018年网鼎杯的CommentCTF比赛题目
在这里插入图片描述

工具环境

BUUCTF在线靶场
burp suite抓包工具

具体实施

首先进入靶场你会看到一个类似于论坛贴吧的页面,当你点击发帖的时候会让你进行登录操作,如下所示请添加图片描述
在这里我们看到了提示这里账号和密码都大致给出了,但是密码后三位没有给出,在这里我们可以利用burpsuite暴力破解一下,尝试登录,请添加图片描述
我们挂上代理然后在页面内发送请求,利用burpsuite成功抓到数据,然后我们在password=zhangwei &000& 这里进行标记发送的Intruder界面,设置为number数字为:000-999然后进行暴力破解
请添加图片描述
破解后如图所示在数字为666的时候字段长度有明显区别,很有可能这就是密码的后三位,尝试登录后成功登录
在这里插入图片描述
到了这个页面可以看到页面一共就几个操作就是发帖和发帖后的详情页面,自己也尝试了使用简单的单引号双引号等等测试发现没有任何反馈,那么就试一试能不能够获取到网页源码,在斜杠后输入.git
请添加图片描述
可以看到出现了一个页面并不是404,那么就可以尝试利用githacker工具尝试获取到网页源码,这里也是成功获取到了网页源码

//write_do.php
<?php
include "mysql.php";
session_start();
if($_SESSION['login'] != 'yes'){header("Location: ./login.php");die();
}
if(isset($_GET['do'])){
switch ($_GET['do'])
{
case 'write':$category = addslashes($_POST['category']);$title = addslashes($_POST['title']);$content = addslashes($_POST['content']);$sql = "insert into boardset category = '$category',title = '$title',content = '$content'";$result = mysql_query($sql);header("Location: ./index.php");break;
case 'comment':$bo_id = addslashes($_POST['bo_id']);$sql = "select category from board where id='$bo_id'";$result = mysql_query($sql);$num = mysql_num_rows($result);if($num>0){$category = mysql_fetch_array($result)['category'];$content = addslashes($_POST['content']);$sql = "insert into commentset category = '$category',content = '$content',bo_id = '$bo_id'";$result = mysql_query($sql);}header("Location: ./comment.php?id=$bo_id");break;
default:header("Location: ./index.php");
}
}
else{header("Location: ./index.php");
}
?>

通过代码我们可以看到一个简单的登录和读写操作,首先判定我们是否登录成功,我们已经破解成功并登录了,然后就是获取用户的do操作,这里的do操作我们需要进行判定具体在哪个位置进行的操作请添加图片描述
打开f12可以看到就是我们的提交按钮的两种状态,一个是发帖时候的提交就是write另外一个就是提交后帖子的详情页面内容的提交

通过代码我们可以看到在write选项下的参数都是经过addslashes()函数进行过滤了的这个函数就是可以对单引号双引号反斜线进行转义这就是刚开始简单注入无效的原因
在这里插入图片描述
但是addslashes函数虽然会对输入的payload进行转义加上斜杠,但是在写入数据库的时候并不会进行转义而是直接写入不会带上斜杠,这里我们可以简单的实验一下

这里我将某个登录界面的用户登录获取设置为addslashes函数进行包裹
请添加图片描述
然后在去登录界面进行登录请添加图片描述
我们可以看到登录的账号和数据库的写入是一模一样的并没有带入斜杠

那么回到刚才的步骤,既然不会影响写入数据库那我我就能够考虑到二次注入的可能性,刚好在comment选项中
在这里插入图片描述
会再次调用category参数并写入数据库,最后回显到页面,回显去网页查看可以知道是content参数,那么我们可以在第一个写贴的页面构造这样一个payload
请添加图片描述
请添加图片描述

insert into board set category= '',content=database(),/*',.....bo_id='*/#'"

这样就成功实现闭合后构造出自己的payload,在留言框可以看到已经成功的看到数据库的名字。

这就是一个实现二次注入的简单例子,就是通过写入数据库数据在调用的一个过程,这种注入比赛有很多题目,只有多练习才能有更大的收获。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/392599.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列:Kafka吞吐量为什么比RocketMQ大

根据资料显示RocketMQ每秒能处理10W量级数据&#xff0c;而Kafka能处理17W量级数据。 这两者差别主要再使用的零拷贝技术不一样。 再什么情况下零拷贝技术诞生了 为了防止消息队列中的消息因为各种意外情况丢失&#xff0c;要对消息进行持久化处理&#xff0c;将其存储在磁盘…

NLP——文本预处理

本文思维导图 文本预处理及其作用 文本语料在输送给模型前一般需要一系列的预处理工作, 才能符合模型输入的要求, 如: 将文本转化成模型需要的张量, 规范张量的尺寸等, 而且科学的文本预处理环节还将有效指导模型超参数的选择, 提升模型的评估指标. 一、文本处理的基本方法 1…

C++ | Leetcode C++题解之第326题3的幂

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isPowerOfThree(int n) {return n > 0 && 1162261467 % n 0;} };

【TS】declare 全局声明方式

declare关键字 declare是描述TS文件之外信息的一种机制&#xff0c;它的作用是告诉TS某个类型或变量已经存在&#xff0c;我们可以使用它声明全局变量、函数、类、接口、类型别名、类的属性或方法以及后面会介绍的模块与命名空间。 declare关键字用来告诉编译器&#xff0c;某…

工业控制常用的EtherNet/IP、OPC UA协议的标签数据转发到另外的PLC寄存器地址

在工业自动化领域&#xff0c;越来越多的碰到标签方式通讯的设备&#xff0c;常用有CIP(基于EtherNet/IP) 的协议、OPCUA协议等&#xff0c;CIP协议主要是罗克韦尔/AB的PLC、欧姆龙NX/NJ系列的PLC等&#xff0c;OPCUA协议常见于工业机器人、智能焊接设备等。在不具备标签协议接…

C语言 ——深入理解指针(2)

目录 1. 数组名的理解2. 二级指针3. 指针数组4. 字符指针变量5. 数组指针变量6. 函数指针变量7. 函数指针数组 1. 数组名的理解 这里我们使用 &arr[0] 的方式拿到了数组第一个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;而且是数组首元素的地址&#x…

普华-PowerPMS APPGetUser SQL注入致RCE漏洞复现

0x01 产品简介 PowerPMS是上海普华科技自主研发的移动端工程项目管理产品。支持中英文切换,可与普华PowerOn、PowerPiP系列产品配套使用。产品与工程项目为核心,为项目各参建方提供包括任务管理、文档管理、质量检查、安全检查、施工日志、进度反馈、即时消息等功能在内的服…

Rust 所有权

所有权 Rust的核心特性就是所有权所有程序在运行时都必须管理他们使用计算机内存的方式 有些语言有垃圾收集机制&#xff0c;在程序运行时&#xff0c;他们会不断地寻找不再使用的内存在其他语言中&#xff0c;程序员必须显式的分配和释放内存 Rust采用了第三种方式&#xff1…

鲁班上门维修安装系统源码开发之功能模式

鲁班上门维修安装系统在当今的趋势呈现出显著的增长与创新。随着物联网、智能家居的普及&#xff0c;以及消费者对便捷、高效生活方式的追求&#xff0c;鲁班上门维修安装系统凭借其多渠道预约、智能派单、在线支付与费用明细透明等优势&#xff0c;赢得了市场的广泛认可。 …

【13.PIE-Engine案例——加载Landsat8 Collection2 SR数据集】

原始链接 原始路径欢迎大家登录航天宏图官网查看本案例原始来源 结果展示 具体代码 /*** File : Landsat8 Collection2 SR* Time : 2021/5/24* Author : piesat* Version : 1.0* Contact : 400-890-0662* License : (C)Copyright 航天宏图信息技术股份有…

【mathtype】word中如何输入4×4的矩阵,甚至阶数更多

在写论文或者使用word操作的时候&#xff0c;我们可能会使用矩阵插入我们所写的word中&#xff0c;今天小编就分享一下如何在word中输入矩阵。首先&#xff0c;我们word中需要安装mathtype的插件。 ①打开word&#xff0c;鼠标点击mathtype&#xff0c;再点击内联 ② 出现以下…

大模型常见的问题

什么是涌现现象 即模型在没有被明确训练执行某些任务的情况下&#xff0c;却能够展现出完成这些任务的能力。这是 因为模型在处理大量数据时学习到了复杂的模式和结构&#xff0c;从而能够泛化到未见过的任务上。 LLM的结构是什么样的 大语言模型通常基于Transformer架构&#…

读零信任网络:在不可信网络中构建安全系统10认证身份

1. 用户所知道的信息 1.1. 只有用户本人知道的信息 1.2. 密码 1.2.1. 密码是常用的认证机制 1.2.2. 密码验证就是确认用户“所知”性的较好途径 1.2.3. 用户可以利用密码管理器来便捷地管理多个高强度密码&#xff0c;从而有效降低数据泄露风险 1.2.4. 长度足够长 1.2.4.1…

数据结构——优先队列

文章目录 一、基本介绍二、基本操作三、实现1 实现的思路2 大顶堆实现2.1 概念2.2 完全二叉树的实现方式2.3 优先队列的图示2.4 对于基本操作实现的讲解2.4.1 检查队列是否为空 ( isEmpty )2.4.2 检查队列是否已满 ( isFull )2.4.3 查看 ( peek )2.4.4 插入 ( offer )2.4.5 删除…

本地GitLab runner自动编译Airoha项目

0 Preface/Foreword 1 GitLab runner环境 具体情况如下&#xff1a; Gitlab-ruuner运行在wsl 1中的Ubuntu 18.04 distro上专门为GitLab-runner分配了一个用户&#xff0c;名为gitlab-runner 2 自动编译 2.1 Permission denied 编译过程中&#xff0c;有两个文件出现权限不允…

基于风险的完整性和检查建模(RBIIM)MATLAB仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 Prior Density (先验密度) 4.2 Posterior Perfect Inspection (后验完美检验) 4.3 Posterior Imperfect Inspection (后验不完美检验) 4.4Cumulative Posterior Imperfect Inspection…

嵌入式安全:Provencore Secure os

嵌入式安全有何独特之处? 嵌入式安全领域的领导者 ProvenRun 宣布,其旗舰产品 ProvenCore for ARM™ Cortex-A 最近获得了 通用标准 (CC) EAL7 认证。这是全球首创,因为没有其他操作系统或可信执行环境 (TEE) 达到该安全级别。相比之下,移动安全市场上第二安全的 TEE(对于…

C语言菜鸟入门·数据结构·链表超详细解析

目录 1. 单链表 1.1 什么是单链表 1.1.1 不带头节点的单链表 1.1.2 带头结点的单链表 1.2 单链表的插入 1.2.1 按位序插入 &#xff08;1&#xff09;带头结点 &#xff08;2&#xff09;不带头结点 1.2.2 指定结点的后插操作 1.2.3 指定结点的前插操作 1.3 …

如何对人工智能系统进行测试|要点,方法及流程

当今社会&#xff0c;人工智能发展非常快。现在人工智能的发展已经渗透到了我们生活的方方面面&#xff0c;自动驾驶、或者我们手机里经常用到的一些应用都或多或少涉及到了一些人工智能的功能&#xff0c;比如说美图秀秀、新闻推荐、机器翻译以及个性化的购物推荐等等都涉及到…

视频监控汇聚平台LntonCVS视频监控管理平台解决方案和常见的接入方式

一、视频融合平台 LntonCVS是一款支持多种协议和设备接入的视频汇聚流媒体平台。它能够统一管理和整合不同品牌、不同协议的视频资源&#xff0c;构建视频数据资源池&#xff0c;并通过视频资源目录为各类业务场景提供丰富、实时、高清的视频资源。 二、接入方式 1. 前端设备…