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

SQL二次注入

目录

1.什么是二次注入?

2.二次注入过程

2.1寻找注入点 

2.2注册admin'#用户

2.3修改密码


1.什么是二次注入?

当用户提交的恶意数据被存入数据库后,因为被过滤函数过滤掉了,所以无法生效,但应用程序在从数据库中拿出该用户名时没有对'和#进行转义,导致将密码的检测注释了,虽然看似后端代码将我们输入的'进行了转义,但是当将输入的数据存储到数据库中时,会将'加上存储的(数据库存储数据的特征),这样就实现了二次注入,也叫做存储型SQL注入。

2.二次注入过程

登录页面

注册页面 

 修改密码页面

2.1寻找注入点 

进行一些简单的测试,发现都无法成功 

查看后端代码发现,后端代码对我们输入的登录用户名和密码进行了过滤,因此无法注入

function sqllogin(){$username = mysql_real_escape_string($_POST["login_user"]);  //过滤了单双引号$password = mysql_real_escape_string($_POST["login_password"]);//过滤了单双引号$sql = "SELECT * FROM users WHERE username='$username' and password='$password'";
//$sql = "SELECT COUNT(*) FROM users WHERE username='$username' and password='$password'";$res = mysql_query($sql) or die('You tried to be real smart, Try harder!!!! :( ');$row = mysql_fetch_row($res);//print_r($row) ;if ($row[1]) {return $row[1];} else {return 0;}}

但是发现pass_change.php文件中,修改密码时,当从数据库中找出所修改的用户的密码时,没有对username进行过滤,导致出现二次注入点。

if (isset($_POST['submit']))
{# Validating the user input........$username= $_SESSION["username"];$curr_pass= mysql_real_escape_string($_POST['current_password']);$pass= mysql_real_escape_string($_POST['password']);$re_pass= mysql_real_escape_string($_POST['re_password']);if($pass==$re_pass){	$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";$res = mysql_query($sql) or die('You tried to be smart, Try harder!!!! :( ');$row = mysql_affected_rows();echo '<font size="3" color="#FFFF00">';echo '<center>';

我们是否可以先注册一个类似admin'#的用户,然后当对admin‘#用户进行修改密码时来进行注入呢?话不多说,直接开干

2.2注册admin'#用户

发现可以注册,与我们设想的一样

然后进行登录

顺利登录,此时页面显示YOU ARE LOGGED IN AS admin'#

2.3修改密码

根据pass_change.php文件的代码分析,current password可以随便填写,只要New Password等于Retype Password,程序就会进入if语句中,sql语句就会生效

if (isset($_POST['submit']))
{# Validating the user input........$username= $_SESSION["username"];$curr_pass= mysql_real_escape_string($_POST['current_password']);$pass= mysql_real_escape_string($_POST['password']);$re_pass= mysql_real_escape_string($_POST['re_password']);if($pass==$re_pass){	$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";$res = mysql_query($sql) or die('You tried to be smart, Try harder!!!! :( ');$row = mysql_affected_rows();echo '<font size="3" color="#FFFF00">';echo '<center>';

此时我们将修改的密码进行提交后,admin'#进入sql语句中,上述sql语句就会变为 

$sql = "UPDATE users SET PASSWORD='$pass' where username='$admin'#' and password='$curr_pass' ";

标红的地方就会被注释掉,就会成功修改admin的密码

此时我们使用admin用户进行登录,测试admin的密码是否被修改

可以见到,我们确实用admin用户成功登录,在这之前我们是不知道admin用户的密码的

这就是sql二次注入,可以利用它来修改任意用户的密码,所以危害是比较大的

相关文章:

SQL二次注入

目录 1.什么是二次注入&#xff1f; 2.二次注入过程 2.1寻找注入点 2.2注册admin#用户 2.3修改密码 1.什么是二次注入&#xff1f; 当用户提交的恶意数据被存入数据库后&#xff0c;因为被过滤函数过滤掉了&#xff0c;所以无法生效&#xff0c;但应用程序在从数据库中拿…...

深入学习小程序开发第二天:数据绑定与动态更新

一、概念 在小程序中,数据绑定是指将页面的数据和视图进行关联,使得数据的变化能够自动反映在视图上,而不需要手动操作DOM。这种绑定是双向的,即数据改变时视图更新,视图操作(如用户输入)也能改变数据。 二、用法 1.单向数据绑定与双向数据绑定: 在小程序中,数据绑定…...

【ai】 时间序列分析的python例子

时间序列分析 :分析和理解随时间变化的数据序列 在gcc的趋势滤波后,需要对排队延迟梯度进行检测及调整,参考的是一个阈值, 调整阈值时就使用了时间序列分析技术: 时间序列分析是统计学和数据分析中的一种技术,用于分析和理解随时间变化的数据序列。时间序列数据具有时间上…...

生成订单幂等性(防止订单重复提交)

订单唯一性(防止重复下单)方案 重复下单产生原因&#xff1a; 客户端原因&#xff1a; 比如下单的按键在点按之后&#xff0c;在没有收到服务器请求之前&#xff0c;按键的状态没有设为已禁用状态&#xff0c;还可以被按。又或者&#xff0c;在触摸屏下&#xff0c;用户手指…...

IDEA自定义注释模版

1.类&#xff08;接口/枚举等同理&#xff09; 2.方法模版 先自定义一个模版组&#xff0c;然后在里面添加模版名&#xff0c;触发快捷键&#xff08;Tab/Enter&#xff09;&#xff0c;模版描述&#xff0c;哪些语言中应用 模版中的自定义参数params和returns可以自动展开参数…...

Spring Cloud Gateway实现API访问频率限制

Spring Cloud Gateway实现API访问频率限制 一、为什么需要访问频率限制&#xff1f;二、使用全局过滤器实现访问频率限制步骤&#xff1a;示例代码&#xff1a; 三、使用特定路由的过滤器实现访问频率限制步骤&#xff1a;示例代码&#xff1a; 四、总结 在微服务架构中&#x…...

单例模式:确保唯一实例的设计模式

前言 在学习框架和大型项目开发时&#xff0c;我们常常会遇到“单例模式”这个词。虽然它时常被提及&#xff0c;但往往没有详细讲解。为了搞懂单例模式的真正意义以及它在开发中的应用&#xff0c;我查阅了一些资料并总结了这篇博客。希望通过这篇文章&#xff0c;能够帮助大…...

MCU调试技巧-串口打印

1. 软件仿真printf 条件&#xff1a;MDK 效果&#xff1a;在软件仿真模式下&#xff0c;调试页面的串口终端中可以看到串口打印 教程&#xff1a;https://blog.csdn.net/ybhuangfugui/article/details/94378195 2. 串口重定向printf 条件&#xff1a;物理串口接线 效果&…...

VS+Qt+C++点云PCL三维显示编辑系统

程序示例精选 VSQtC点云PCL三维显示编辑系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《VSQtC点云PCL三维显示编辑系统》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易…...

代码随想录算法训练营第七天(一)| 454.四数相加II 383. 赎金信

454.四数相加II 题目&#xff1a; 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1…...

SpringBoot+Mybatis 分页

无论多数据源,还是单数据源,分页都一样,刚开始出了点错,是因为PageHelper的版本问题 这里用的SpringBoot3 SpringBoot2应该是没有问题的 相关代码 dynamic-datasourceMybatis多数据源使用-CSDN博客 依赖 <?xml version"1.0" encoding"UTF-8"?&g…...

学习进行到了第十七天(2024.8.5)

1.Mybatis的定义 数据持久化是将内存中的数据模型转换为存储模型&#xff0c;以及将存储模型转换为内存中数据模型的统称。例如&#xff0c;文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis 支持定制化 SQL、存储过程以及高级映射&#xff0c;可以…...

【Nuxt】Layout 布局和渲染模式

NuxtLayout app.vue <NuxtLayout><NuxtPage/></NuxtLayout>然后默认的布局 需要 写在 ~/layouts/default.vue 下面&#xff0c;其他自定义的布局也在写在 layouts 目录下。 default.vue <template><div class"app-container"><d…...

C:指针学习(1)-学习笔记

目录 前言&#xff1a; 知识回顾&#xff1a; 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结&#xff1a; 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语&#xff1a; 前言&#xff1a; 距离上一次更新关于初…...

【LVS】负载均衡之NAT模式

一、LVS概念 LVS&#xff08;Linux Virtual Server&#xff09;是一个基于Linux操作系统的虚拟服务器技术&#xff0c;用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上&#xff0c;从而提高整体服务的处理能力和可靠性。 二、LVS优势 高性能&…...

ASP.NET Core 基础 - 入门实例

一. 下载 1. 下载vs2022 Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 学生,个人开发者选择社区版就行,免费的. 安装程序一直下一步下一步就行,别忘了选择安装位置,如果都放在C盘的话,就太大了. 2. 选择工作负荷 准备工作完成 二. 创建新项目 三…...

机器人主板维修|ABB机械手主板元器件故障

【ABB机器人电路板故障原因诊断】 针对上述故障现象&#xff0c;我们需要对ABB机器人IO板进行详细的故障诊断。以下是一些可能的故障原因&#xff1a; 1. 元器件老化或损坏&#xff1a;ABB机械手安全面板上的元器件在长期使用过程中可能出现老化、损坏或接触不良等问题&#xf…...

大数据Flink(一百零六):什么是阿里云实时计算Flink版

文章目录 什么是阿里云实时计算Flink版 一、产品概述 二、产品架构 三、产品优势 什么是阿里云实时计算Flink版 阿里云实时计算Flink版是一套基于Apache Flink构建的⼀站式实时大数据分析平台&#xff0c;提供端到端亚秒级实时数据分析能力&#xff0c;并通过标准SQL降低业…...

ERCOT中的专业术语解释

在ERCOT中&#xff0c;ECRSM 代表的是 “Emergency Contingency Resource Supplementary Market”。这个术语涉及到紧急备用资源市场&#xff0c;用于应对电力需求或供应的紧急情况。在ERCOT电网中&#xff0c;当系统面临极端情况或资源不足时&#xff0c;ECRSM 可以帮助确保电…...

Python酷库之旅-第三方库Pandas(069)

目录 一、用法精讲 276、pandas.Series.dt.is_quarter_start属性 276-1、语法 276-2、参数 276-3、功能 276-4、返回值 276-5、说明 276-6、用法 276-6-1、数据准备 276-6-2、代码示例 276-6-3、结果输出 277、pandas.Series.dt.is_quarter_end属性 277-1、语法 …...

终极jPlayer部署指南:从开发到生产环境的完整流程

终极jPlayer部署指南&#xff1a;从开发到生产环境的完整流程 【免费下载链接】jPlayer jPlayer : HTML5 Audio & Video for jQuery 项目地址: https://gitcode.com/gh_mirrors/jp/jPlayer jPlayer是一款基于jQuery的HTML5音频/视频库&#xff0c;能够帮助开发者创建…...

【CVPR26-杜克大学】超越真值约束:利用图像质量先验实现真实场景图像修复

Beyond Ground-Truth: Leveraging Image Quality Priors for Real-World Image Restoration代码&#xff1a;https://github.com/fengyang1399-pixel/IQPIR单位&#xff1a;杜克大学、清华大学、洛桑联邦理工学院一、问题背景现在的真实场景图像修复&#xff08;模糊人脸、暗光…...

开源可部署+高算力适配:internlm2-chat-1.8b在Ollama中GPU利用率提升方案

开源可部署高算力适配&#xff1a;internlm2-chat-1.8b在Ollama中GPU利用率提升方案 1. 模型简介与部署准备 InternLM2-Chat-1.8B是第二代书生浦语系列中的18亿参数对话模型&#xff0c;专门针对聊天场景进行了深度优化。这个模型在指令遵循、对话体验和功能调用方面表现出色…...

Molex连接器国产替代型号全指南:规格匹配与选型技巧解析

一、Molex连接器简介Molex&#xff08;莫仕&#xff09; 是全球知名的连接器与互连件制造商&#xff0c;其产品线覆盖极其广泛的电子连接解决方案&#xff0c;从 线对线&#xff08;Wire‑to‑Wire&#xff09;、线对板&#xff08;Wire‑to‑Board&#xff09;、板对板&#x…...

M2LOrder模型解析Java八股文:核心知识点梳理与面试模拟

M2LOrder模型解析Java八股文&#xff1a;核心知识点梳理与面试模拟 最近和几个正在找工作的朋友聊天&#xff0c;发现他们最头疼的就是Java面试里的“八股文”。知识点又多又杂&#xff0c;背了忘忘了背&#xff0c;更别提那些需要深入理解的底层原理了。市面上题库倒是不少&a…...

免费AI视频生成工具技术解析与功能对比

AI视频生成技术在2026年取得了显著进展&#xff0c;从早期的简单动画到如今的高质量视频输出&#xff0c;底层技术架构经历了多次迭代。本文将从技术角度解析当前主流免费AI视频生成工具的技术原理、架构特点和功能参数&#xff0c;为开发者和技术从业者提供参考。AI视频生成技…...

机器人自主导航避坑指南:ROS里程计数据处理的5个常见错误及解决方法

机器人自主导航避坑指南&#xff1a;ROS里程计数据处理的5个常见错误及解决方法 在机器人自主导航系统中&#xff0c;里程计数据是定位和导航的基础。然而&#xff0c;即使是经验丰富的ROS开发者&#xff0c;在处理里程计数据时也常常会遇到各种问题。本文将深入探讨五个最常见…...

深入解析航顺HK32F030C8T6与STM32F030的兼容性差异及实战调优

1. 航顺HK32F030C8T6与STM32F030的硬件差异解析 第一次拿到航顺HK32F030C8T6这颗国产MCU时&#xff0c;我下意识以为它和STM32F030可以完全互换。但实际在智能家居项目中踩坑后才发现&#xff0c;两者的硬件差异远比想象中多。最明显的区别就是主频——STM32F030最高只能跑到48…...

OpenClaw多任务队列:千问3.5-35B-A3B-FP8批量处理100+图片分析

OpenClaw多任务队列&#xff1a;千问3.5-35B-A3B-FP8批量处理100图片分析 1. 为什么需要批量图片处理方案 上周我接手了一个自媒体团队的素材整理需求——他们积压了300多张未分类的配图需要紧急处理。手动操作需要完成以下工作&#xff1a;按主题分类图片、提取图中的文字信…...

C语言在嵌入式开发中的核心优势与实践

1. C语言为何历久弥新在嵌入式开发领域摸爬滚打十几年&#xff0c;我见过无数编程语言起起落落&#xff0c;唯独C语言始终屹立不倒。记得刚入行时&#xff0c;前辈就告诉我&#xff1a;"想搞嵌入式&#xff0c;先把C语言吃透。"当时不以为然&#xff0c;直到后来调试…...