数据库暴露--Get型注入攻击
1.背景知识
1.1Post、Get的对比
特性 | GET 方法 | POST 方法 |
---|---|---|
HTTP 方法类型 | GET | POST |
数据位置 | URL 查询字符串(?key=value) | 请求体(Request Body) |
数据可见性 | 明文显示在 URL 和浏览器历史中 | 不可见(除非开发者工具查看) |
数据长度限制 | 受 URL 长度限制(通常约 2048 字符) | 无明确限制(但服务器可能限制) |
缓存 | 可被缓存 | 默认不缓存 |
书签/分享 | 可保存为书签或分享带参数的 URL | 不可直接保存(需额外处理) |
安全性 | 较低(敏感数据不应使用) | 较高(但仍需 HTTPS 加密) |
幂等性 | 是(多次请求结果相同) | 否(可能产生副作用,如重复提交) |
主要用途 | 获取数据(查询、搜索、过滤等) | 提交数据(登录、表单提交、修改等) |
HTML 表单示例 | <form method="get" action="/search"> | <form method="post" action="/submit"> |
后端接收方式 | 通过查询参数获取(如 req.query ) | 通过请求体获取(如 req.body ) |
适用场景举例 | 搜索页面、分页、筛选条件 | 用户注册、文件上传、敏感操作 |
post型注入通过表单提交数据,get型注入通过”变量“=”值“的形式,使用?连接添加到action所指向的URL的后面。
即Post型SQL注入发生再页面表单提交信息处。Get型SQL注入发生再通过超链接方式向其他网页传递参数时。
1.2数据库暴露的原理
在用Get方式进行数据库查询时,通过数据库的SQL注入漏洞得到数据库的内容。
2.创建数据库
2.1创建SQL脚本
create database if not exists lab;use lab;drop table if exists books;
create table books
(
id int not null auto_increment,bookname char(64) not null,
author char(32) not null,primary key(id));insert into books(bookname,author) values('安徒生童话全集','汉斯·克里斯汀·安徒生');
insert into books(bookname,author) values('A Brief History Of Time','Stephen Hawking');
2.2将脚本文件导入到数据库
登录数据库
导入
3.建立get方式查询的网站
3.1con_database.php
<?php
$con=mysqli_connect('127.0.0.1','root','123456')
or die('数据库连接失败');
mysqli_select_db($con,'lab')
or die('选择数据库失败');
?>
3.2新建index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Get型查询</title>
</head>
<body><div style=" margin-top:70px;color:#FFFFFF; font-size:23px; text-align:center">
<font color="#FF0000"><?php
//包含数据库连接
include('con_database.php');if(isset($_GET['id']))
{$id=$_GET['id'];$sql="SELECT * FROM books WHERE id='$id' LIMIT 0,1";$result = mysqli_query($con,$sql) or die('SQL语句执行失败, : '.mysqli_error($con));$row = mysqli_fetch_row($result);if($row){echo "<font size='5' color= '#99FF00'>";echo 'Book name: ' .$row[1];echo "<br>";echo 'Author: ' .$row[2];echo "</font>";}else {print_r(mysqli_error($con));}
}
else { echo "请输入要查询记录的id";}?>
</font>
</div>
</body>
</html>
3.3功能测试
http://localhost/get/index.php?id=1
表示查询对应路径以及文件名,查询第一条记录,?用来连接URL地址喝Get方式传递的变量id
4.数据库暴库攻击测试
进行GET方式SQL注入
4.1暴数据库
http://
localhost/get/index.php?id=-1%27union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata--+
SQL 注入语句解析:
http://localhost/get/index.php?id=-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+
分解分析:
-
id=-1'
- 尝试闭合原本的 SQL 查询字符串(假设原查询是
SELECT * FROM table WHERE id='$id'
)。 -1
确保不返回正常数据,使后续UNION
结果可见。
- 尝试闭合原本的 SQL 查询字符串(假设原查询是
-
union select 1,group_concat(schema_name),3
UNION SELECT
用于合并查询结果,要求列数匹配原查询(此处假设原查询返回 3 列)。group_concat(schema_name)
是 MySQL 函数,用于合并所有数据库名(schema_name
)成一个字符串。1, ..., 3
是占位值,确保列数匹配。
-
from information_schema.schemata
information_schema.schemata
是 MySQL 系统表,存储所有数据库信息。- 攻击者通过此查询获取服务器上的所有数据库名。
-
--+
--
是 SQL 注释符,用于忽略原查询的剩余部分(如LIMIT 1
等)。+
在 URL 中代表空格(避免被浏览器过滤)。
4.2暴lab数据库的数据表
http:/localhost/get/index.php?id=-1%27union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27lab%27--+
相关文章:

数据库暴露--Get型注入攻击
1.背景知识 1.1Post、Get的对比 特性GET 方法POST 方法HTTP 方法类型GETPOST数据位置URL 查询字符串(?key=value)请求体(Request Body)数据可见性明文显示在 URL 和浏览器历史中不可见(除非开发者工具查看)数据长度限制受 URL 长度限制(通常约 2048 字符)无明确限制(…...

AI炼丹日志-26 - crawl4ai 专为 AI 打造的爬虫爬取库 上手指南
点一下关注吧!!!非常感谢!!持续更新!!! Java篇: MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 大数据篇 300: Hadoop&…...

ESP32-idf学习(四)esp32C3驱动lcd
一、前言 屏幕是人机交互的重要媒介,而且现在我们产品升级的趋势越来越高大尚,不少产品都会用lcd来做界面,而esp32c3在一些项目上是可以替代主mcu,所以驱动lcd也是必须学会的啦 我新买的这块st7789,突然发现是带触摸…...

【python】uv管理器
uv是一个速度极快的 Python 包和项目管理器,用 Rust 编写。 安装 安装uv之前,确保你的电脑不需要安装了python 在Windows下,可以使用官方的脚本直接安装 powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.…...
关于Web安全:7. WebShell 管理与持久化后门
一、菜刀马 菜刀马(ChinaZ WebShell) 是一种与“中国菜刀(ChinaZ)”客户端配合使用的 WebShell 木马,广泛应用于 Web 渗透测试中,主要使用 PHP/ASP/JSP 等语言编写。 它的本质是一个一句话木马࿰…...
音视频中的复用器
🎬 什么是复用器(Muxer)? 复用器(muxer)是负责把音频、视频、字幕等多个媒体流打包(封装)成一个单一的文件格式的组件。 💡 举个形象的例子: 假设你有两样东…...

戴尔AI服务器订单激增至121亿美元,但传统业务承压
戴尔科技121亿美元的AI服务器订单,不仅超过了公司整个2025财年的AI服务器出货量,更让其AI订单积压达到144亿美元的历史高位。 戴尔科技最新财报显示,AI服务器需求的爆炸式增长正在重塑这家老牌PC制造商的业务格局,但同时也暴露出…...
远程线程注入
注入简单来说就是让别人的程序执行 你想要让他执行的dll #include<iostream> #include<Windows.h> using namespace std;char szBuffer[] "C:\\Users\\20622\\source\\repos\\Dll1\\Debug\\test.dll"; //dll路径void RemoteThreadInject(DWORD Pid,PCH…...

如何手搓扫雷(待扩展)
文章目录 一、扫雷游戏分析与设计1.1 扫雷游戏的功能说明1.2 游戏的分析和设计1.2.1 数据结构的分析1.2.2 文件结构设计 二、扫雷游戏的代码实现三、扫雷游戏的扩展总结 一、扫雷游戏分析与设计 扫雷游戏网页版 1.1 扫雷游戏的功能说明 使用控制台(黑框框的程序&a…...

俄军操作系统 Astra Linux 安装教程
安装 U盘制作 Rufus 写盘工具:https://rufus.ie/ Astra Linux ISO 镜像文件:https://dl.astralinux.ru/astra/stable/2.12_x86-64/iso/ 准备一个8g以上的u盘,打开Rufus写盘工具,选择下载的iso镜像,写入u盘ÿ…...

第三方软件评测机构如何助力软件品质提升及企业发展?
第三方软件评测机构与软件开发者及使用者无直接关联,它们提供全方位的检测和公正的评价服务。这样的评测可以展现客观的成效,对提升软件的品质具有显著影响,且在软件产业中发挥着至关重要的角色。 评测的客观性 独立第三方机构与软件开发者…...

Python打卡训练营Day40
DAY 40 训练和测试的规范写法 知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作业&#x…...
【仿生系统】爱丽丝机器人的设想(可行性优先级较高)
非程序化、能够根据环境和交互动态产生情感和思想,并以微妙、高级的方式表达出来的能力 我们不想要一个“假”的智能,一个仅仅通过if-else逻辑或者简单prompt来模拟情感的机器人。您追求的是一种更深层次的、能够学习、成长,并形成独特“个性…...

JS逆向案例—喜马拉雅xm-sign详情页爬取
JS逆向案例——喜马拉雅xm-sign详情页爬取 声明网站流程分析总结 声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权&am…...
钩子函数的作用(register_hook)
钩子函数仅在backward()时才会触发。其中,钩子函数接受梯度作为输入,返回操作后的梯度,操作后的梯度必须要输入的梯度同类型、同形状,否则报错。 主要功能包括: 监控当前的梯度(不返回值)&…...
电子电路:深入了解CMOS技术构造和工作原理
一、CMOS的基本结构与工作原理 1. 核心结构:互补MOSFET CMOS(互补金属氧化物半导体)的核心是成对的NMOS(N沟道MOSFET)和PMOS(P沟道MOSFET)晶体管,两者共享同一硅衬底但通过阱(Well) 隔离: NMOS:构建在P型衬底上,源/漏极为N⁺掺杂区。当栅极电压(V_GS)高于阈值…...

STM32CubeMX定时器配置
STM32CubeMX定时器配置 一,Mode界面1,Slave Mode (从模式)2,Trigger Source (触发源) 三,Channelx(通道模式)1,Input Capture2,Output Compare3,PWM Generation4…...

QNAP MEMOS 域名访问 SSL(Lucky)
注意:下述是通过ssh、docker-compose方式安装docker的,不是直接在container station中安装的哈!!! 一、编辑docker-compose.yml文件 用“#”号标识的,在保存文件的时候建议去掉,不然有时候会出…...
跟单业务并发量分析
虚拟货币交易所中的跟单交易(copy trading)业务在高峰期的确可能产生较高的并发量,但具体并发量取决于多个因素,包括交易所的规模、用户数量、热门交易员的活跃度、行情波动频率等。 📌 1. 跟单交易的并发特点 触发集…...

如何将多张图组合到一张图里同时保留高的分辨率(用PPT+AdobeAcrobat)
文章目录 一、用PPT排版得到一页排布了很多图片的PPT二、用AdobeAcrobat打开pdf文件三、最后得到的图片 一、用PPT排版得到一页排布了很多图片的PPT 步骤如下 ①将幻灯片大小的长设置为17.2,宽根据图像多少进行调整,我这里是10 幻灯片大小的长设置步骤&…...

pycharm找不到高版本conda问题
pycharm找不到高版本conda问题 高版本的condaPycharm不能自动识别,需要手动添加。 首先打开你要添加的conda环境win的话在conda终端输入 where conda查找conda的可执行文件位置 进入Pycharm设置,点击添加解释器,点击加载环境,…...
支持selenium的chrome driver更新到137.0.7151.55
最近chrome释放新版本:137.0.7151.55 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…...

2025年上半年软考系统架构设计师--案例分析试题与答案
必选题一:大模型训练系统 某公司开发一个在线大模型训练平台,支持 Python 代码编写、模型训练和部署,用户通过 python 编写模型代码,将代码交给系统进行模型代码的解析,最终由系统匹配相应的计算机资源进行输出,用户不需要关心底层硬件平台。 a.系统发生…...

Eclipse 插件开发 5.2 编辑器 获取当前编辑器
Eclipse 插件开发 5.2 编辑器 获取当前编辑器 1 获取活跃编辑器2 获取全部编辑器 Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Click1 Bundle-SymbolicName: com.xu.click1;singleton:true Bundle-Version: 1.0.0 Bundle-Activator: com.xu.click1.Activato…...
讲述我的plc自学之路 第十二章
“老k,你没想过自己以后怎么过吗?”lora听我夸他漂亮,开始鼓起勇气追问我的过往。 “我还能怎样呢,说实话,家里介绍过几次相亲了,上来就问车问房的,大多数不了了之。”我解释道。 “老k这你就…...

Visual Studio 的下载安装
下载 官网:https://visualstudio.microsoft.com/zh-hans/ 点击免费 Visual Studio。 点击 Visual Studio Community 下的免费下载。 保留并下载。 安装 双击下载的 exe 安装文件,点击继续。 等他下载安装完。 选择你要下载的组件(我只勾了一个 .NET 桌…...
C# 如何获取当前成员函数的函数名
C# 如何获取当前成员函数的函数名 在 C# 中获取当前成员函数的名称,有以下几种常用方法: 1. 使用 MethodBase.GetCurrentMethod()(反射) using System.Reflection;public void MyMethod() {string methodName MethodBase.GetCu…...

苍茫命令行:linux模拟实现,书写微型bash
文章目录 🌇前言2、需求分析3、基本框架4、核心内容4.2、指令分割4.3、程序替换 5、特殊情况处理5.2、内建命令5.3、cd5.4、export5.5、echo5.6、重定向 6、源码 🌇前言 Linux 系统主要分为内核(kernel)和 外壳(shell),普通用户是无法接触到…...

虚拟DOM和DOM是什么?有什么区别?虚拟DOM的优点是什么?
虚拟DOM与真实DOM的概念 虚拟DOM(Virtual DOM)是一种对真实DOM的抽象表示,其结构通常为一个JavaScript对象,保存了DOM节点的标签、属性、子节点等信息。真实DOM则是浏览器中的实际文档对象模型,由HTML代码解析生成&am…...

累加法求数列通项公式
文章目录 前言如何判断注意事项适用类型方法介绍典例剖析对应练习 前言 累加法,顾名思义,就是多次相加的意思。求通项公式题型中,如果给定条件最终可以转化为 a n 1 − a n f ( n ) a_{n1}-a_nf(n) an1−anf(n)的形式,或者…...