如何快乐地检测SQL注入

article/2025/8/8 17:10:03

这估计大家也都发现了,测试SQL注入这种漏洞啊,又有WAF页面又没有明显的报错的情况下, 测试起来就是一个字,烦。

有waf:

我 and 1=1, 啪,它拦了。

我 order by, 啪,它拦了。

我 sleep(5),  啪,它拦了。

我 benchmark(50000000,MD5(1)), 啪,它又拦了。

页面不报错:

我 插入一个' 符号,  啪, 返回码还是200,不仅不报sql语句的错误,比如SQL syntax error near这种,连通用错误都不报,比如返回一个500响应码啥的。 只有一个空的响应,但我不知道是因为我插入了' 导致代码执行异常然后被错误处理程序处理了返回了一个空响应还是因为数据库压根没这个数据返回了一个空响应。当然,有时候也不是空响应,而是返回的页面的发生的微小的变化, 需要你放大眼睛才能看见

所以就有这么一个情况,有的人吧,他学了很多sql注入语句,但一开始测试 一被waf拦或者页面没有明显报错信息就不知道咋办了。懵了,那怎么办呢。

所以我想了几分钟,终于发现一个比较适合测试SQL注入的方法。

我敢说啊,这个方法绝对让你感到震惊和意外。

简单来说,就是不依赖插入荷载导致页面差异来判断,而是依赖插入荷载页面是不是还是一样来判断。

不需要' and 1=1 然后 ' and 1=2这种,而是更骚气的操作。

简称页面一致流。

因为这样的操作不仅不容易被WAF检测,还能高效判断是不是可能有注入。

废话不多说,下面进入实例讲解。

我去搜了我h1的报告,我发现只有一个sql的漏洞,还是重复的。我打开一看发现已经修复了。

 

这有问题吗? 没有问题

因为我还可以用靶场。而且就算没修复,万一打码不严谨,导致意外事情发生,那不就脸黑了。

所以这叫啥,这叫紧急避险。

虽然我挖sql注入实战经验不多, 但影响我吹牛逼吗? 不影响,为啥呢,因为我会吹。

所以用靶场来演示有关系吗?没有关系。因为实战我也挖不到。

用这个靶场

https://portswigger.net/web-security/sql-injection/blind/lab-conditional-responses

咋操作呢。

第一步, 当然是先确定我们的输入能不能影响页面。

输入一个fake

很明显,影响了,一个有Welcome back!,一个没。

 

然后呢,然后很简单,插入一个荷载,然后页面还有Welcome back!,我就认为是有注入的。

插入的荷载要根据具体情况具体构造。

比如这里,TrackingId的值为c7oeRGoH7RkYYQzC, 给c7oeRGoH7RkYYQzC 变形一下。

c7'||'oeRGoH7RkYYQzC

c7' 'oeRGoH7RkYYQzC

c7'%2b'oeRGoH7RkYYQzC

上面的荷载无论哪个返回了和c7oeRGoH7RkYYQzC 一样的页面, 都可以怀疑是有注入,

为啥是这样3个荷载,很简单, 因为是我从这里抄来的。

 

代表了4种数据库连接字符串的方式。

那么直接公布答案, 这里是c7'||'oeRGoH7RkYYQzC返回了一样的页面。

所以后端要么是Oracle数据库,要么是PostgreSQL

那么能证明存在注入了吗, 当然

不能

废话, 当然不能了,万一代码被特殊符号直接过滤掉了,啥特殊符号通通去掉。c7'||'oeRGoH7RkYYQzC

特殊符号去掉以后还是c7oeRGoH7RkYYQzC。那页面不还是一样嘛。

那有办法判断吗。

简单, ez ,

c7oeRGoH7RkYYQzC 变成c’7oeRGoH7RkYYQzC

c7oeRGoH7RkYYQzC 变成c|7oeRGoH7RkYYQzC

这样测一下,就知道特殊符号有没有过滤了,只要页面不一样,就说明没被过滤。注意,是不一样啊,

至于为啥,自己想想。那这样就能判断有注入了吗? 当然

不能

废话, 当然不能了,万一代码里面遇到特性符号就报错,一报错就跳到错误处理,错误处理一处理完就返回一个默认值。那页面还是不一样, 这跟注入半毛钱关系没有。那这样测试有啥用,有用,但不是决定性作用,我就是玩,就是好玩。哪怕看起来像是注入,其实也不一定是注入。因为穿裙子的不一定是妹子,还可以是女装大佬。

前面说到,能满足c7'||'oeRGoH7RkYYQzC的,后端要么是Oracle数据库,要么是PostgreSQL。

那么试一下下面两个。

c7'||'oeRGoH7RkYYQz'||to_char('C')||'

c7'||'oeRGoH7RkYYQz'||cast('C'+as+text)||'

如果第一个荷载导致页面一致,那数据库就是Oracle,

如果第二个荷载导致页面一致,那数据库就是PostgreSQL

别问我从哪里知道这些函数的,我从这里复制粘贴过来的。从不生产知识,只是知识的搬运工。

 

那么这时候可以确定有sql 注入了吗? 也许,可能,大概吧。因为话不能说得太满。

不然这叫什么? 这叫打脸。

有人可能想问,如果to_char和cast被waf ban了,咋办,我咋知道咋办,凉拌。

你发现一个可能存在注入的点, 你直接发给一个注入大触手,让他帮你利用,然后啪地一声,几千刀到手,

这叫什么, 这叫抓住机会。当然这波可能真的是你判断错误, 这真不是一个注入点, 那有关系吗,没有关系。敢想敢测, 才叫挖洞嘛。所以有两个字非常关键,配合。他没时间找可疑的漏洞点,你有时间找可疑的漏洞点,没法深入利用,这就叫配合。你看了这个文章,想要自己找到一个注入,然后发现这个网站10年的间就出现了两个注入的案例,这有关系吗,没有关系。为啥呢,因为你快乐。

可能还有人想问,这是字符型的注入,那数字型的咋弄,前面不是说了嘛,具体情况具体分析,发挥

你的想象力,你肯定可以自己构造的, 这有问题吗?没有问题。

那这个方法就没有缺点吗? 废话, 肯定有啊。 我想出来的办法必须有缺点, 没缺点我还不想。有两个缺点,第一个缺点呢很容易产生误报,别问,懂的都懂。第二个缺点呢,有一种情况死活检测不到,

这个我也不说,因为懂的都懂。

这叫啥,又误报又漏报。

这有关系吗,没有关系,为啥呢,因为你不会触发大部分waf, 所以你很快乐。

因为检测过程简单无脑, 所以你很快乐, 快乐就完事,不要想那么多头发容易变秃的操作。


http://chatgpt.dhexx.cn/article/JoR6V30A.shtml

相关文章

SQL注入(一)之原理与检测

一 SQL注入攻击原理 01 注射式攻击的原理 注入产生的原因是接受相关参数未经处理直接带入数据库查询操作;注入攻击属于服务端攻击,他与操作系统、数据库类型、脚本语言类型无关总之一句话: 注入产生的原因是接受相关参数未经处理直接带入数据库查询操作。02 sql注入…

25显函数求导数

1、显函数求导数

人工智能之数学基础----隐函数求导和相关变化率

本章主要讲解隐函数求导和相关变化率,大家理解什么叫隐函数及其如何求导 隐函数求导 相关变化率 隐函数求导 首先我们来理清什么叫隐函数,讲解隐函数之前我们来讲显函数,因为隐函数是相对显函数而言的 y f ( x ) yf(x) yf(x)像这种函数中&am…

Python应用:画出任意二维函数的轨迹

一、提要 对于显函数,其曲线可以通过给出定义域和对应的函数值画出。然而对于一些隐函数,不能显式表达,其曲线如何画出?如果从定义域内,逐点求出函数值,然后画出点序就不是一个很好的主意。用计算方法求出所…

Matlab之函数绘图函数ezplot

一、功能 可以直接调用ezplot进行函数绘制 二、语法 1.ezplot(fun) 绘制表达式 fun(x) 在默认定义域 -2π < x < 2π 上的图形&#xff0c;其中 fun(x) 仅是 x 的显函数。 fun 可以是函数句柄、字符向量或字符串。 2.ezplot(fun,[xmin,xmax]) 绘制 fun(x) 在以下域…

隐函数作图

背景介绍 Matlab提供了一系列绘图函数&#xff0c;常见的包括绘制2D曲线的plot函数、绘制2D隐函数曲线的ezplot函数、绘制3D曲面的mesh和surf函数、绘制3D显函数曲面的ezmesh和ezsurf函数。值得注意的是&#xff0c;ez系列的绘图函数里只有ezplot是绘制隐函数曲线的&#xff0c…

基础30讲 第11讲 多元函数微分学

目录 综述1、基本概念1.1 平面点集邻域边界区域聚点 1.2 极限1.3 连续1.4 偏导数1.5 可微1.6 偏导数的连续性 2、多元函数微分法则2.1 链式求导法则2.2 隐函数存在定理&#xff08;公式法&#xff09; 3、多元函数的极值与最值3.1 概念3.2 无条件极值(数学公式计算只适用于2元)…

MATLAB符号函数绘制各种函数图像,ezplot()函数 ezplot3()函数

我们学习常遇见的函数种类有显函数&#xff0c;隐函数&#xff0c;参数方程三种&#xff0c;对于隐函数绘制图像比较麻烦&#xff0c;给大家介绍一种简单实用的一中画函数的方法。 函数介绍 二维曲线ezplot()函数 ezplot()函数用于绘制显函数&#xff0c;隐函数&#xff0c;…

9.5 隐函数求导法则

本篇内容我们说一下隐函数求导的法则&#xff0c;之前在初次接触导数的时候&#xff0c;我们有总结过一部分隐函数求导的内容&#xff0c;虽然和本篇的内容有一部分相似&#xff0c;但是可以再看一看用于对比理解。上正文。 一、概念阐明 1.什么叫隐函数&#xff1f; 形如F(x…

MATLAB绘图命令fimplicit绘制隐函数图形入门详解

一、fimplicit基本语法 数学上的一元函数可以分为显函数和隐函数两大类&#xff0c;显函数的优点是能够明显的看出来因变量和自变量之间的关系&#xff0c;也就是对应法则&#xff0c;但是隐函数往往无法看出对应法则&#xff0c;而且很多时候都不能轻松的转化为显函数。 fplot…

高数-隐函数求导

目录 什么是隐函数 一个方程&#xff0c;两个未知数 一个方程&#xff0c;三个未知数 方程组求偏导 隐函数求导一般有两种情形&#xff0c;一种是单个方程&#xff0c;另一种是方程组。下面来介绍这两种情形的求导方法。 什么是隐函数 首先我们要明确&#xff1a;什么是隐函…

数学分析 - 隐函数

简介&#xff1a;用多元函数&#xff08;隐函数中自变量和因变量同时存在的表达式的作为多元函数的表达式&#xff09;的思维来分析隐函数 隐函数的概念 || 定义&#xff1a;隐函数的定义&#xff08;一个多元函数F(x, y)构成的方程F(x, y) 0&#xff0c;隐含了一个隐函数yf(…

MATLAB二元隐函数绘图命令fimplicit3详解

一、引言 fimplicit3功能是绘制二元隐函数的曲面图形。 类似于一元函数分为显函数和隐函数&#xff0c;二元函数也有显函数和隐函数之分。形如zf(x,y)的二元函数称为显函数&#xff0c;而由三元方程f(x,y&#xff0c;z)0确定的二元函数称为隐函数。 二元函数对应的几何图形是空…

隐函数的求导

目录 隐函数的定义&#xff1a; 例题&#xff1a; 参数方程确定函数的导数 例题&#xff1a; 相关变化率 ​编辑 隐函数的定义&#xff1a; 有隐函数就有显函数&#xff0c;我们首先要了解显函数的定义&#xff1a; 隐函数&#xff1a; 例如&#xff1a; 对于有些隐函数&a…

4.1 显函数曲线的动画

例 4.1.1 作出幂函数 yx^k 的动画 (k从0.1变到3)。 解 输入以下命令&#xff1a; with(plots): K:30: a:0.1: L:seq(plot(x^(a*k), x0…4), k0…K): display(L, insequencetrue, scalingconstrained, tickmarks[2,2], view[-0.2…4, -0.2…4]); 输出动画&#xff1a; 例 4.1.2…

095: 复习习题 求导题型 Case1:显函数求导;Case2:隐函数求导;Case3:参数方程确定的函数

095: 复习习题 求导题型 Case1&#xff1a;显函数求导&#xff1b;Case2&#xff1a;隐函数求导&#xff1b;Case3&#xff1a;参数方程确定的函数

《高数》笔记 一

为什么学高数&#xff1f; 锻炼自己的思维&#xff0c;以防老年痴呆。 如何服用高等数学&#xff1f;&#xff08;学习方法&#xff09; 做题不盲目做&#xff0c;一点点增加难度&#xff0c;难题一定要自己做出来不急于求成知道答案&#xff0c;过程对你很重要。 课程目标…

2.1 显函数曲面

二元函数 zf(x, y) 的图形一般是曲面。 曲面 作图的基本格式&#xff1a; plot3d(f(x,y), xa…b, yc…d); 例 2.1.1 作出以下函数的图形 &#xff08;定义域是一个正方形区域&#xff09; 解 输入以下命令&#xff1a; plot3d(x^ 2y^2, x-2…2, y-2…2); 输出图形&#xff1…

matlab符号函数作图,matlab制图—符号函数(显函数、隐函数和参数方程)画图

例1:在[0,pi]上画ycos x 的图形. 解:ezplot(cos(x),[0,pi]) 所制图形是: 例2:在[0,2pi]上画xcost^3,ysint^3星形图. 解:ezplot(cos(t)^3,sin(t)^3,[0,2*pi]) 所制图形是: 例3:在[-2,0.5]&#xff0c;[0,2]上画隐函数exp^xsin(xy)0的图. 解&#xff1a;ezplot(exp(x)sin(x*y),[-…

1.1 显函数的图形

1.1 显函数的图形 作函数 yf(x) 的图形&#xff1a; 用Maple作图的基本格式&#xff1a; plot(f(x), xa…b); 注意&#xff1a; 分号(;)结束表示显示图形; 冒号(:)结束表示不显示图形。 例1.1.1 作出以下函数的图形: 解 输入以下命令&#xff0c;并以分号结束: plot(sin(x), x…