sql注入——二次注入

news2024/11/15 19:47:11

二次注入

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

简介

二次注入是一种较为隐蔽的 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 board
            set 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 comment
            set 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.coloradmin.cn/o/1982607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马微服务—Docker

Docker 文章目录 Docker1 快速入门1.1 部署MySQL1.2 命令解读 2 Docker基础2.1 常见命令2.2 数据卷2.2.1 数据卷**2.2.2 数据卷命令**2.2.3 挂在本地目录或文件 2.3 自定义镜像2.3.1 镜像结构2.3.2 Dockerfile2.3.3 构建镜像 2.4 容器网络 3 项目部署3.1 部署java项目3.2 部署前…

MySQL 实战 45 讲(01-05)

本文为笔者学习林晓斌老师《MySQL 实战 45 讲》课程的学习笔记&#xff0c;并进行了一定的知识扩充。 sql 查询语句的执行流程 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器和执行器。 连接器负责接收客…

【第14章】Spring Cloud之Gateway路由断言(IP黑名单)

文章目录 前言一、内置路由断言1. 案例&#xff08;Weight&#xff09;2. 更多断言 二、自定义路由断言1. 黑名单断言2. 全局异常处理3. 应用配置4. 单元测试 总结 前言 Spring Cloud Gateway可以让我们根据请求内容精确匹配到对应路由服务,官方已经内置了很多路由断言,我们也…

天润融通助力车企做好战败线索分析,实现商机转化最大化

激烈的行业竞争&#xff0c;让车企越来越重视战败客户分析。 对于每一个汽车品牌来说&#xff0c;大约会有80%甚至更多的留资顾客未在本店购车&#xff0c;最终成为广义上的战败客户。因此&#xff0c;挖掘战败背后的原因对车企意义重大。 作为大宗商品&#xff0c;汽车的交易…

基于Python的Bilibili视频信息分析与可视化

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究背景研究现状研究目的及意义数据采集及预处理数据清洗数据分析与可视化总结每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 …

浅谈用二分和三分法解决问题(c++)

目录 问题引入[NOIP2001 提高组] 一元三次方程求解题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路分析AC代码 思考关于二分和三分例题讲解进击的奶牛题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 思路AC代码 平均数题目描述输入格式输出格式样例 …

【Material-UI】Icon Button 组件详解

文章目录 一、基础用法1. 禁用状态 二、大小&#xff08;Sizes&#xff09;1. 小尺寸&#xff08;Small&#xff09;2. 大尺寸&#xff08;Large&#xff09; 三、颜色&#xff08;Colors&#xff09;1. 主题颜色2. 自定义颜色 四、高级用法和最佳实践1. 无障碍性&#xff08;A…

【香橙派系列教程】(七)香橙派下的Python3安装

【七】香橙派下的Python3安装 为接下来的Linux图像识别智能垃圾桶做准备。 图像处理使用京东SDK只支持pyhton和Java接口&#xff0c;目的是引入C语言的Python调用&#xff0c;感受大厂做的算法bug 此接口是人工智能接口&#xff0c;京东识别模型是通过训练后的模型&#xff0c;…

打靶记录7——Hacker_Kid-v1.0.1

靶机下载地址 https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova难度 OSCP 风格的中级难度靶机&#xff08;只需要获取root权限即可&#xff0c;CTF 风格的靶机就还需要获取flag&#xff09; 涉及的攻击方法&#xff1a; 主机发现端口扫描Web信息收集DNS区域传…

数组——对数组进行更加全面的理解

1.数组的概念 数组是一组相同类型元素的集合。数组可分为一维数组和多维数组&#xff0c;多维数组常见的是二维数组。 2.一维数组的创建和初始化 2.1 数组的创建 一维数组的创建的基本语法是&#xff1a; type arr_name[常量值] 例如&#xff0c;我们现在想要存储某个班级…

【C语言】qsort函数的介绍和使用

0. 引言 我们日常生活中经常能碰到需要给一组数据排序的情况&#xff0c;如将班上同学的身高&#xff0c;年龄从大到小排序&#xff0c;平时网上购物时对商品价格从低到高排序等等场景&#xff0c;那么电脑是根据什么程序完成这些排序的&#xff1f;接下来就来给大家介绍一下C语…

上升探索WebKit的奥秘:打造高效、兼容的现代网页应用

嘿&#xff0c;朋友们&#xff01;想象一下&#xff0c;你正在浏览一个超级炫酷的网站&#xff0c;页面加载飞快&#xff0c;布局完美适应你的设备&#xff0c;动画流畅得就像你在看一场好莱坞大片。这一切的背后&#xff0c;有一个神秘的英雄——WebKit。今天&#xff0c;我们…

MySQL数据库——数据库的基本操作

目录 三、数据库的基本操作 1.数据库中库的操作 ①创建数据库 ②字符集和校验规则 ③操纵数据库 ④备份与恢复 2.数据库中表的操作 ①创建表 ②查看表 1> 查看表位于的数据库 2>查看所有表 3>查看表中的数据 4>查看创建表的时候的详细信息 ③修改表 …

如何使用react在画布上实现redo-undo?

To implement undo/redo functionality with React you don’t need to use Konva‘s serialization and deserealization methods. You just need to save a history of all the state changes within your app. There are many ways to do this. It may be simpler do to th…

IoTDB 入门教程 企业篇③——数据同步和增量备份

文章目录 一、前文二、系统架构三、准备两台服务器四、新建任务五、数据同步测试六、遇到的问题 一、前文 IoTDB入门教程——导读 数据库备份与迁移是数据库运维中的核心任务&#xff0c;其重要性不言而喻。确保备份过程既简单快捷又稳定可靠&#xff0c;对于保障数据安全与业务…

会声会影下载免费吗?会声会影2023中文旗舰版下载及配置最低要求

**会声会影2024&#xff1a;引领视频创作新时代的创新之旅** 在数字时代的浪潮中&#xff0c;视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步&#xff0c;一款名为“会声会影2024”的视频编辑软件横空出世&#xff0c;它不仅继承了前代产品的优秀传统&#…

【STM32】EXTI与NVIC标准库使用框架

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 EXTI简介 EXTI配置 使能AFIO的时钟 配置GPIO端口为外部中断 外部中断初始化 NVIC介绍与配置 NVIC中断优先级分组 NVIC初始化 NVIC框架 EXTI配置图 中断函数 中断函数配置 获取中…

GPU as Code:趋动OrionX产品的创新之路

在当今快速发展的云计算和DevOps领域&#xff0c;IaC (Infrastructure as Code) 已经成为提升IT基础设施管理效率的关键实践。趋动科技的OrionX产品&#xff0c;通过软件定义GPU硬件&#xff0c;为开发者和运维团队提供了一种全新的AI算力资源管理方式。本文将深入探讨OrionX如…

习题2.32

这个题目 粗看起来好像是很简单,但是我在实现的时候,真的是废了好大的力气,主要原因有三点,第一,对clojure语言的属性程度不够高,第二,课本语言与clojure语言的差异点,我自以为理解的很透彻,导致了出现很奇异的现象,我找不到解释,一点思路都没有。第三,也就是最关键…

Vue 3+Vite+Eectron从入门到实战系列之(二)一Elementplus及VueRouter的配置

为了后续开发方便,在没有 UI 设计师配合的情况下,让我们的界面更加美观,我们使用 elementplus 组件库,并配置路由。 删除不需要的默认文件夹及文件,src 配置如下 实现效果 安装 elementplus,vue-router npm install element-plus --save npm install vue-router --save在…