SQL二次注入

news2024/12/30 2:32:26

目录

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二次注入,可以利用它来修改任意用户的密码,所以危害是比较大的

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

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

相关文章

动手学深度学习V2每日笔记(深度卷积神经网络AlexNet)

本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1h54y1L7oe/spm_id_from333.788.recommend_more_video.0&vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不太理解的内容进行笔记记录&…

COCO格式json转yolo唯一官方指定转换方法

自带转换程序&#xff0c;谁还在那自己写呢&#xff1f; https://docs.ultralytics.com/reference/data/converter/?hconvert_coco#ultralytics.data.converter.convert_coco """ 这个脚本用于将coco数据集格式转换为yolo数据集格式 """ from …

【最新版】Windows10纯净专业版下载:无捆绑软件!

今天系统之家小编给大家带来2024年最新的Windows10纯净专业版系统&#xff0c;经过精心地优化&#xff0c;确保系统无捆绑软件&#xff0c;系统资源占用少&#xff0c;是非常干净的专业版系统&#xff0c;且兼容性强&#xff0c;配置不高的老电脑也适合安装&#xff0c;安装后运…

linux 查看一个端口是否被占用

1 linux命令 要在Linux中查看一个端口是否被占用&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff08;Terminal&#xff09;。 运行以下命令来列出系统上所有正在监听的端口及其对应的进程&#xff1a; sudo netstat -tuln | grep LISTEN这将显示所有正在…

【LeetCode每日一题】2024年8月第二周(上)

2024.8.5 困难 链接&#xff1a;600. 不含连续1的非负整数 &#xff08;1&#xff09;题目描述&#xff1a; &#xff08;2&#xff09;示例 &#xff08;3&#xff09;分析 思路1&#xff1a; 题目要求的数值&#xff0c;是将数二进制转换后&#xff0c;不存在连续的1&#x…

python 爬取 ip 代理网站 获取ip代理池

爬取的网站&#xff1a;免费私密代理IP_IP代理_HTTP代理 - 快代理 示例代码&#xff1a; import jsonimport requests import time,reclass daili:# 1.发送请求&#xff0c;获取响应def send_request(self, page):print("正在抓取第{}页".format(page))# 目标网页&…

设计模式19-状态模式

设计模式19-状态模式&#xff08;State Pattern&#xff09; 写在前面状态变化模式 动机定义与结构定义结构 C代码推导优缺点应用总结 写在前面 状态变化模式 在组建构建过程中&#xff0c;某些对象的状态经常面临着变化。如何对这些变化进行有效的管理呢&#xff1f;同时又w…

特征向量可视化方法介绍

在最近的研究中&#xff0c;实验需要结合可视化进行解释分析&#xff0c;于是大致上了解了下目前一些特征可视化的工具&#xff0c;主要分为四种类型&#xff1a;热力图、散点图、线性图和雷达图&#xff0c;并将相应的基础绘制方法做一个简单的总结。 1 热力图&#xff08;Hea…

向量检索的3种方式

本文介绍向量检索服务如何通过控制台、SDK、API三种不同的方式检索向量。 控制台方式 登录向量检索服务控制台。 在左侧导航栏单击Cluster列表&#xff0c;选中需要检索向量的Collection&#xff0c;单击Collection详情。 在左侧二级导航栏&#xff0c;单击相似向量搜索&…

Leetcode - 136双周赛

目录 一&#xff0c;3238. 求出胜利玩家的数目 二&#xff0c;3239. 最少翻转次数使二进制矩阵回文 I 三&#xff0c;3240. 最少翻转次数使二进制矩阵回文 II 四&#xff0c;3241. 标记所有节点需要的时间 一&#xff0c;3238. 求出胜利玩家的数目 本题直接暴力求解&#x…

springboot招聘管理系统-计算机毕业设计源码26241

摘 要 随着企业的发展和竞争的加剧&#xff0c;人才招聘成为企业人力资源管理中的重要环节。为了提高招聘效率、降低招聘成本&#xff0c;同时提升招聘过程的透明度和公平性&#xff0c;设计并实现一款基于 SpringBoot 的招聘管理系统具有重要的现实意义。 本系统旨在提供一个全…

【MySQL】MySQL常见命令大全

目录 前言一、DQL二 、DML(数据操作语言)部分2.1 插入数据&#xff1a;2.2 更新数据:2.3 删除数据&#xff1a;2.4 创建 create 三、修改 alter四、删除 drop五、表的复制六、常见数据类型 前言 大家好&#xff0c;不知道前面的20题大家写的怎么样&#xff0c;前面分享的20题是…

数据库技术如何增强 AI 大模型?来直播间同拓数派开启探索之旅!

如今&#xff0c;大模型应用正以前所未有的速度改变着各个行业。从自然语言处理、计算机视觉到多模态任务的解决方案&#xff0c;AI 技术已经成为推动业务创新的核心力量。然而&#xff0c;大模型的训练和推理需要处理大量高维度的向量数据&#xff0c;传统数据库在面对这些需求…

3.串口(UART)

串口理论部分可看51部分&#xff1a;链接 数据帧 帧头(2字节&#xff0c;例如AA、BB) 数据长度&#xff08;2字节&#xff09; 数据 CRC16校验&#xff08;2字节&#xff09; 帧尾&#xff08;2字节&#xff09; 代码编写 串口一发送命令控制LED灯(PB5、PE5) LED灯、串口、…

python:基于YOLO框架和遥感图像的目标检测

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何通过YOLO框架和遥感图像进行目标检测的代码。 文章目录 一、数据集下载与格式转换1.1 NWPU VHR-10&#xff08;73.1 MB&#xff09;1.2 DIOR&#xff08;7.06 GB&#xff09;1.3 配置data.yaml 二、训练三、训练结果 一、数据集…

揭秘 NKAbuse:一种滥用 NKN 协议的新型多平台威胁

写在前面的话 在卡巴斯基全球紧急响应团队&#xff08;GERT&#xff09;和GReAT处理的一次网络安全事件应急响应过程中&#xff0c;研究人员发现了一个名为“KNAbuse”的新型多平台网络威胁。这款恶意软件利用了NKN技术在对等节点之间进行数据交换&#xff0c;功能上相当于一种…

NC 合并k个已排序的链表

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 合并 k 个升序…

Ubuntu系统安装docker和docker-compose并解决拉取镜像超时失败问题

安装docker 1、添加Docker官方的GPG密钥: curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 2、添加docker的软件源 sudo add-apt-repository "deb [archamd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release …

嵌入式软件--C语言高级 DAY 8 函数

函数是C语言尤为重要的知识点&#xff0c;再嵌入式的学习过程中&#xff0c;对51和32的单片机的学习是重中之重。 一、函数的基本概念 1.介绍 函数是一种可重复使用的代码块&#xff0c;用于执行特定的任务或操作。 函数允许我们将代码逻辑组织成独立的单元&#xff0c;从而…

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、语法 …