SQL注入【ByPass总结】(八)

2023-12-30 13:04

本文主要是介绍SQL注入【ByPass总结】(八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

0、前言

本文是SQL注入分享终结前篇,整理一些针对ByPass替换方法,和对应SQL注入修复建议。最后一篇ByPass靶场5关实战,会有点难,包含写成wp前后我花了5~6小时,而且内容有些多,所以以单独一篇分享。希望对大家在学习理解SQL注入有帮助。

像Access,MSSQL、Oracle注入我自己也没做靶场实验就不做分享了,大家如果感兴趣的话,可以网上搜索了解学习下。

1、常见ByPass

1.1、等号被过滤
1. 使用 >, <, <> 替换
and ascii(substr(database(),1,1))>xxx2.采用like, rlike语句
and database() like 't%'
注: rlike的内容为正则,正则写法与java一致,需要转义,例如’ \n’ 需要使用’ \\n’3.采用regexp,in,between
and database() regexp 'test.*'
Regexp函数使用方法与rlike类似,都是正则匹配
and database() in ('test')
and substr(database(),1,1) BETWEEN 't' and 't'
1.2、substr、 mid被过滤
1.采用locate,position,instr,lpad,rpad
and LOCATE('e',database())in('2')
and LOCATE('t',database(),4)in('4')注:
locate(str1,str2)
返回str1字符串在str2里第一次出现的位置,没有返回0
Locate(str1,str2,pos)
返回str1字符串在str2里pos(起始位置)出现的位置,没有返回0
pos必须大于第一次出现的位置,才能显示第二次出现的位置
1.3、逗号被过滤
1.采用%2C
id= -1' union select 1%2C2%2C3--+2.采用from xx for xx, from(x)
and substr(database()from 2 for 1)='e'
1.4、and/or被过滤
1.使用&&、 ||或者like
&& substr(database(),1,1)='t'
|| substr(database(),1,1)='t'
like+if(substr(database(),1,1)='s',1,0)=1--+(此处的like需要结合判断函数使用)注:在mysql中 and与or 是可以用 &&和||相互代替的
如: and 1=1 ->&& 1=1 or 1=1 ->||1=1
不过在oracle中, ||为拼接字符,如: ’a’||’b’->’ab’,相当于mysql中的concat()
1.5、关键字被过滤
1.大小写绕过,如User(), dAtaBASE(), SelEct等。
2.只过滤一次时,双重关键字绕过,如selselectect, ununionion, oorr等。
3.and/or+空格被替换为空时, andand+空格(oror+空格)绕过。
4.注释符绕过, //, -- , /**/, #, --+, -- -, ;,%00,--a, /*!*/。
5.编码绕过:如URLEncode编码, ASCII,HEX,unicode编码绕过。

2、SQL注入修复建议

1.过滤sql相关特殊字符
2.参数化查询
3.使用预编译的存储方式

这篇关于SQL注入【ByPass总结】(八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/552915

相关文章

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运