二、sql绕过过滤

参考文章:文章

一、sql绕过过滤

解释:sql绕过过滤,通俗来说就是你注入的sql语句里面有一些关键词被WAF过滤掉了,你需要想一些办法进行绕过

1.注释

解释:下面是三种注释方法,常用的是前两种,其中在浏览器中注释一般用--+因为+号会被自动解析为空格

-- 注释内容
# 注释内容
/*注释内容*/

1.1 内联注释

解释:有一种内联注释注入(其只存在于mysql),其相比上面的注入更常用,其是/*注释内容*/的变体,标准格式为/*!代码*/

SELECT * /*!from*/ emails;
上面的语句等价于SELECT * from emails;
SELECT * FROM emails WHERE email_id=5 UNION /*!select*/ 1,2;
上面的语句等价于SELECT * FROM emails WHERE email_id=5 UNION select 1,2;

2.大小写过滤

适用情况:当WAF将如select过滤掉,我们使用SELECT也可能成功绕过WAF的过滤实现注入

3.双写绕过

适用情况:WAF会进行匹配关键词如select,如果匹配成功就进行将关键词删除,我们可以构造selselectect这样这个单词中间的select剩余字母就又拼接成select从而实现注入(这种情况适合条件很苛刻)

4.编码绕过

适用情况:对例子一般where name=xxxx对于xxxx可以转换为编码进行绕过

4.1 十六进制编码

SELECT * FROM emails WHERE email_id=0x737475706964406468616b6b616e2e6c6f63616c;
-- 上面表示查询email_id=stupid@dhakkan.local的信息,其中注意,16进制编码需要0x开头
-- 后面跟字符串对应的16进制编码

4.2 ASCII编码

SELECT * FROM emails WHERE email_id=CHAR(115, 116, 117, 112, 105, 100, 64, 100, 104, 97, 107, 107, 97, 110, 46, 108, 111, 99, 97, 108);
-- 上面表示查询email_id=stupid@dhakkan.local的信息
-- 可以用hackbar的SQL MYSQL-CHAR快速编写出类似格式的内容

5.空格绕过

5.1 /**/

SELECT/**/*/**/FROM/**/course;
等价于
SELECT * FROM course;

5.2 ()

-- ()括号内不能写*
-- 括号包裹的内容一般不能是select from where这种关键词
SELECT(Cno)FROM(course);
等价于
SELECT Cno FROM course;

5.3 回车

SELECT
Cno
FROM
course;
-- 通过回车就能实现没有输入空格就实现SQL注入
-- 回车的URL编码%0a(在浏览器栏输入时适用)

5.4 `

-- 注意`是反引号并非'单引号
-- 反引号包裹的内容一般不能是select from where这种关键词
SELECT`Cno`FROM`course`;

5.5 Tab

-- Tab类似于输入空格但其同空格并不相同
-- Tab的URL编码%09(在浏览器栏输入时适用)
SELECT	Cno	FROM	course;

6.同义过滤

1. 普通同义

and 同义 &&
or 同义 ||
xor 同义 |
not 同义 !
= 同义 like regexp rlike
!= 同义 <>
' 同义 十六进制
SELECT Cno FROM course WHERE Cno=1 && Cpno=5;
SELECT Cno FROM course WHERE Cno=1 || Cpno=5;
SELECT Cno FROM course WHERE Cno=1 | Cpno=5;
SELECT Cno FROM course WHERE Cno!=1;
SELECT Cno FROM course WHERE Cno like 1;
SELECT Cno FROM course WHERE Cno<>1;

2.函数同义

2.1 >或<(greatest、least)
>< 等价于 greatest(n1, n2, n3…) least(n1, n2, n3…)
-- greatest返回参数当中的最大值,这就类似于适用大于小于号的效果
-- least返回参数当中的最小值,这就类似于适用大于小于号的效果
SELECT * FROM course WHERE Cno=9 AND GREATEST(ASCII(SUBSTR(Cname,1,1)),1)=106;
2.2 =(strcmp、between)
= 等价于 strcmp(s1, s2) 
= 等价于 between ... and ...
-- strcmp用来对比s1与s2两个字符串,当s1与s2完全相同时返回0
SELECT * FROM course WHERE Cno=9 AND STRCMP('1','1')=0;
SELECT * FROM course WHERE Cno=9 AND SUBSTR(Cname,1,1) BETWEEN 'j' AND 'j'; -- 查看Cname中第一个字符是不是等于'j'
2.3 逗号
-- 适用于类似substr函数(sql盲注时使用)
SELECT * FROM course WHERE Cno=9 AND SUBSTR(Cname,1,1) BETWEEN 'j' AND 'j';
等价于
SELECT * FROM course WHERE Cno=9 AND SUBSTR(Cname FROM 1 FOR 1) BETWEEN 'j' AND 'j';
-- 适用于并列条件时(联合注入)
SELECT * FROM course WHERE Cno=9 UNION SELECT 1,2,3,4;
等价于
SELECT * FROM course WHERE Cno=9 UNION SELECT * FROM (SELECT 1)a JOIN  (SELECT 2)b JOIN (SELECT 3)c JOIN (SELECT 4)d;
-- 适用于使用limit时
SELECT * FROM course LIMIT 0,2;
等价于
SELECT * FROM course LIMIT 2 OFFSET 0;

7.函数过滤

解释:指某些函数被过滤之后用同义函数去替代

7.1 sleep()

替代函数:benchmark()

SELECT 1 AND SLEEP(1);
SELECT 1 AND BENCHMARK(1000000000,1);
MySQL有一个内置的BENCHMARK()函数,可以测试某些特定操作的执行速度。 参数可以是需要执行的次数和表达式。第一个参数是执行次数,第二个执行的表达式

7.2 ascii()

替代函数:hex()bin()conv()

替代函数:ord()

SELECT * FROM course WHERE Cno=9 AND ASCII(SUBSTR(Cname,1,1))=106;
等价于
SELECT * FROM course WHERE Cno=9 AND CONV(HEX(SUBSTR(Cname,1,1)),16,10)=106;
-- CONV('FF', 16, 10); 将’FF‘从16进制转换为10进制
SELECT ORD('a'); -- ord 只是在处理中文的时候同ascii有区别
SELECT ASCII('a');

7.3 group_concat()

替代函数:concat_ws()

SELECT GROUP_CONCAT(1,2,3); -- 123
SELECT CONCAT_WS(',',1,2,3); -- 1,2,3

7.4 substr()

替代函数:substring ()mid() left() right()


SELECT SUBSTR('abcdef',1,2); -- ab
SELECT SUBSTRING('abcdef',1,2);-- ab
SELECT MID('abcdef',1,2);-- ab
SELECT LEFT('abcdef',2);-- ab
SELECT RIGHT('abcdef',2);-- ef

8.特殊符号

例子1:

SELECT+Cno-1+1.from course;
等价于
SELECT Cno FROM course;
-- +是用于字符串连接的,‛-‛和‛.‛ 在此也用于连接,可以逃过空格和关键字过滤

9.关键词

select insert update delete
替代此时考虑是否存在堆叠注入
-- 查数据库 show database;
-- 查表 show tables;
-- 查列 show columns from table;

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

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

相关文章

2.1 Linux C 编程

一、Hello World 1、在用户根目录下创建一个C_Program&#xff0c;并在这里面创建3.1文件夹来保存Hellow World程序&#xff1b; 2、安装最新版nvim ①sudo apt-get install ninja-build gettext cmake unzip curl ②sudo apt install lua5.1 ③git clone https://github.…

HarmonyOS 振动效果开发指导

Vibrator 开发概述 振动器模块服务最大化开放硬工最新马达器件能力&#xff0c;通过拓展原生马达服务实现振动与交互融合设计&#xff0c;打造细腻精致的一体化振动体验和差异化体验&#xff0c;提升用户交互效率和易用性、提升用户体验、增强品牌竞争力。 运作机制 Vibrato…

内衣专用洗衣机怎么样?好用又便宜的迷你洗衣机推荐

迷你洗衣机作为一种小型便捷的家用必备洗涤设备&#xff0c;一直都受到越来越多家庭的青睐。一台迷你洗衣机可以帮助我们解决很多麻烦&#xff0c;节省我们的很多时间。对于不少在外工作的人&#xff0c;往往是一个人住&#xff0c;买一台大型的洗衣机或许有点浪费资源&#xf…

客户关系管理 (CRM)系统如何帮助企业实现最佳客户管理

文章目录 什么是客户关系管理 (CRM)&#xff1f;现代哪些企业会用到CRMCRM要实现的目标是什么&#xff1f;CRM 的特点与优势CRM 与数据CRM 与人工智能推荐阅读 什么是客户关系管理 (CRM)&#xff1f; 客户关系管理 (CRM) 是指用于管理客户关系的全方位软件系统&#xff0c;可以…

JWT令牌的获取与过滤器Filter的使用

JWT&#xff0c;全称JSON Web Token&#xff08;JSON Web令牌&#xff09;&#xff0c;是一个开放标准 (rfc7519)。它定义了一种紧凑的、自包含的方式&#xff0c;以JSON对象的形式安全地在各方之间传输信息。这种信息可以被验证和信任&#xff0c;因为它是通过数字签名实现的。…

专升本期间部分C语言程序整理

说明 这些程序是我在专升本期间在CSDN上上传的作业、练习等&#xff0c;仅为学习备考的一小部分程序&#xff0c;整理成一篇文章&#xff0c;方便专升本的学弟学妹参考。 时间&#xff1a;2021年~2022年专升本期间 字符串题 输入字符串提取 数字字符 并 求和 &#xff08;4处…

设计一个在裸机下使用的简单软件定时器(2):软件设计

0 前言 在RTOS中&#xff0c;我们经常用到软件定时器来为我们处理一些对于实时性要求不高的定时任务。在裸机开发中&#xff0c;我们可能也有很多需要定时执行的任务&#xff0c;为了优雅地执行这些定时任务&#xff0c;本文设计一个在裸机下使用的简单软件定时器&#xff0c;…

WPS论文写作——公式和公式序号格式化

首先新建一个表格&#xff0c;表格尺寸按你的需求来确定&#xff0c;直接 插入--》表格 即可。 然后在表格对应位置填上公式&#xff08;公式要用公式编辑器&#xff09;和公式序号&#xff0c;然后可以按照单独的单元格或者整行或整列等来设置样式&#xff0c;比如居中对齐、…

电脑监控软件的监控方式有哪些

电脑监控软件是一种用于监视和控制计算机操作的工具&#xff0c;通常用于企业或个人对计算机的使用情况进行监控和管理。本文将探讨电脑监控软件的监控方式及其存在的问题。 首先&#xff0c;电脑监控软件的监控方式主要包括以下几种&#xff1a; 1、屏幕监控&#xff1a;这种…

【23-24 秋学期】NNDL 作业10 BPTT

习题6-1P 推导RNN反向传播算法BPTT. 习题6-2 推导公式(6.40)和公式(6.41)中的梯度&#xff0e; 习题6-3 当使用公式(6.50)作为循环神经网络的状态更新公式时&#xff0c; 分析其可能存在梯度爆炸的原因并给出解决方法&#xff0e; 习题6-2P 设计简单RNN模型&#xff0c;分别…

洛谷P1044 [NOIP2003 普及组] 栈 递归方法

目录 核心&#xff1a; 问题转化&#xff1a; 状态转化&#xff1a;&#xff08;你得先读懂题&#xff0c;理解我们要干什么&#xff09; 对应不同情况下的状态转化&#xff1a;&#xff08;比如栈空就不能出栈&#xff0c;&#xff0c;&#xff09; AC代码&#xff1a; 题…

【每日OJ —— 110. 平衡二叉树】

每日OJ —— 110. 平衡二叉树 1.题目&#xff1a;110. 平衡二叉树2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目&#xff1a;110. 平衡二叉树 2.解法 2.1.算法讲解 1.这道题中的平衡二叉树的定义是&#xff1a;二叉树的每个节点的左右子树的高度差的绝对值不超过 11…

Android12之MediaCodec硬编解码调试手段(四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

发送xml格式的http请求工具类

发送xml格式的http请求 package com.yannis.utils;import com.google.gson.Gson; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpResponse; import…

继续画图带你学习TCP 其他 7 大特性

四、滑动窗口机制 五、流量控制 六、拥塞控制 (安全机制) 七、延迟应答 (效率机制) 八、捎带应答 (效率机制) 九、粘包问题 十、保活机制 TCP总结 四、滑动窗口机制 滑动窗口机制&#xff0c;是在可靠性的前提下&#xff0c;进一步地提高传输效率 认识滑动窗口 一发一收…

vscode的eslint检查代码格式不严谨的快速修复

问题&#xff1a; 原因&#xff1a;复制的代码&#xff0c;esLint检查代码格式不正确。或者写的代码位置不严谨&#xff0c;总是提示 解决 设置在Ctrl S保存时自动格式化代码 1、vscode设置 2、点击右上角&#xff0c;切换json模式 3、添加设置 "editor.codeActionsOn…

JavaScript中使用JSON的基本操作示例

简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种数据交换格式&#xff0c;也是JavaScript中处理数据的常见方式之一。JSON是一种轻量级的数据交换格式&#xff0c;易于阅读和编写&#xff0c;同时也易于解析和生成。在JavaScript中&#xff0c;可以使用内…

Linux gdb调试(总结)

1 gdb的作用 gdb 是 GNU 发布的一个强大的程序调试工具,也是 Linux 程序员不可或缺的一大利器。 2 gdb的使用: (1) 调试讲解的代码 //---------addsub.h--------- #pragma once int jfx_addition (int* a, int* b); int jfx_subtraction (int* a, int* b);//---------adds…

Rust UI开发(五):iced中如何进行页面布局(pick_list的使用)?(串口调试助手)

注&#xff1a;此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库&#xff0c;用于为rust语言程序构建UI界面。 这是一个系列博文&#xff0c;本文是第五篇&#xff0c;前四篇链接&#xff1a; 1、Rust UI开发&#xff08;一&#xff09;&#xff1a;使用iced构建UI时…

【零基础入门Python】Python If Else流程控制

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门Pythonhttps://blog.csdn.net/arthas777/category_12455877.html Python if语句 Python if语句的流程图 Python if语句示例 Python If-Else Statement Python if else语句的流程图 使用Python if-else语句 …