如何高效的手工检测是否存在SQL注入?

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序把安全装进口袋

在诸如SQL注入、XSS等测试场景中,我们需要通过构造不同的测试向量(Payload)发送请求数据,然后根据请求后的响应数据来判断漏洞是否存在。比如SQL盲注的场景下,我们通常会测试"and1=1"、"and1=2"这类的注入语句,根据请求后的响应页面的差异来判断Payload是否被成功执行了。

测试过程中我们会发现,我们需要先提交一个包含测试向量的请求,然后再从响应数据或网页预览界面中寻找某一种特征,然后判断是否符合我们的预期结果,再调整测试向量,重复上述的过程。这样的频繁操作,会导致我们的测试效率低下,尤其在响应数据比较多,并且特征数据比较难找的情景下,更是繁琐。

在1.6.3版本的HTTP抓包测试工具中,我们在HTTP重放模块增加了特征检查功能。我们可以预设多个特征规则,在测试请求被发送后,本工具可在响应数据包中自动匹配预设的特征规则,标记响应列表中具备预设规则的响应,并在响应数据详情中标记符合特征规则的数据位置,解决了需要频繁人为检查数据包的问题

并且每一个测试标签页都可以独立设置专属的特征检查规则,在新建副本标签页时也会拷贝检查规则,还可以将数据包和规则一并导出成配置文件。

本文通过测试靶场来演示新功能“特征检查模块”。

测试漏洞:布尔型SQL盲注漏洞。

使用工具:HTTP抓包测试工具。

访问目标网站:浏览目标网站并访问。

识别注入点::首先要确定应用程序中的注入点,这可以是通过表单、URL参数或Cookie等传递的用户输入。在本文中是一个表单的输入框。

确认注入类型:确定注入点是可用的并且容易注入,本文确定注入类型是盲注。

构造SQL测试Payload:创建不同的SQL测试Payload,用于检测网站是否存在漏洞。

提交不同Payload:使用特征检查匹配代码。检测提交Payload的响应数据是否匹配特征检查设置的规则。

验证SQL漏洞:如果特征检查匹配成功则表明该Payload成功可以使用,则可以确认SQL漏洞测试成功。

使用HTTP抓包测试工具,打开右上角的内置浏览器,在浏览器中访问测试靶场,加载后为一个表单输入框的界面:

(表单输入界面)

在文本框中输入满足数据库查询的字符串,例如“1”,然后点击提交按钮,查看结果显示“UserIDexistsinthedatabase”。

(IDexists)

在文本框中输入不满足数据库查询的字符串,例如“4327”,然后点击提交按钮,查看结果显示“UserIDisMISSINGfromthedatabase.”

(IDMISSING)

由此可知,当进行布尔盲注时,根据页面返回的数据差异来判断注入Payload是否成功。构造正确的SQL语句和错误SQL语句,网站返回的数据会有差异。显示的页面通常会有差异,我们可以通过观察这些差异来推断提交的SQL注入Payload是否成功被代入到数据库中执行。

由于测试中涉及多个SQLPayload,因此选择在重放模块中进行测试。首先,在HTTP抓包测试工具中,打开左上角的拦截开关,拦截数据,然后在浏览器表单中输入“1”,并点击提交按钮发送请求。此时,HTTP抓包测试工具已成功捕获到数据包:

(抓取数据包)

将捕获到的数据发送到数据重放模块中,在重放页面中,构造不同的SQL注入语句,同时利用特征检查来判断响应数据中注入是否生效。接着,依次测试以下的SQLPayload:

通过OR语句构造能查询到数据的条件:'or1=1#通过OR语句构造查询不到数据的条件:'or1=2#确定数据库名字的长度是否为5:'ORLENGTH(DATABASE())=5#判断当前数据库名字的第一个字符:'ORASCII(SUBSTRING(DATABASE(),1,1))=65#//第一个字符是否为'A''ORASCII(SUBSTRING(DATABASE(),2,1))=98#//第二个字符是否为'b'

如果是能查询到数据的注入语句,那么响应数据中则会存在关键词“exists”,但是每提交一次Payload,我们就得去响应的源代码或者网页中去检查是否存在特征关键词,然后进行判断,这个过程会非常繁琐,所以,这里使用抓包测试工具新上线的功能:特征检查,让它来帮我们自动检查和判断,并给我们一个显眼的提示,同时还能帮助我们快速定位特征数据的位置。

点击右侧的特征检查按钮进入特征检查设置页面:

(右侧特征检查)

点击添加按钮:

(添加按钮)

再弹出的添加特征检测规则页面中设置匹配规则,此处匹配类型为包含字符串,字符串为“exists”。

(匹配规则页面)

填写完成后,打开特征检查开关:

(打开开关)

匹配成功:

HTTP抓包测试工具右上角有弹窗提示:

(弹窗提示)

匹配的数据将会以高亮方式显示:

(高亮显示)

双击高亮块则会自动搜索匹配内容:

(双击搜索)

响应数据中将会显示绿色标志:

(绿色灯泡标志)

如果匹配失败,将不会出现上述任何反应。

注:在最新版本的TangGo中,接下来的流程可以使用数据处理模块来完成,不在需要重复的勾选和解码编码。详情请参考

根据测试点替换测试Payload,将id字段中的“1”替换为测试Payload“id=-1'or1=1#”。为确保这些字符在URL中被正确解析,需要对替换的字符进行URL编码。编码后的Payload为“id=-1'+or+1=1+%23”(后续文中的Payload均为编码后)。

(替换测试Payload)

注意:当使用SQL布尔注入的时候,如果使用OR来判断条件是否为真假,请确保OR之前语句为假,例如,本文中使用ID=-1,因为-1必然是一个不存在的用户,所以SQL语句会去执行OR之后的语句,也就是“or+1=1+%23”。

(URL编码)

完成编码后,发送数据包,发现该Payload匹配测试规则。触发了右上角弹窗和高亮:

(成功匹配数据)

双击高亮块搜索源码中的匹配数据:

(HTML代码)

接下来将id字段中的“id=-1'+or+1=1+%23”替换为测试Payload“id=-1'+or+1=2+%23”,发现该Payload不匹配测试规则,未触发任何反应。

(匹配失败)

查看页面中的HTML代码:

接下来只需要测试不同的Payload,查看响应数据代码是否满足特征检查的规则。如果响应数据中包含了我们设定的特征,那么说明该Payload能够触发SQL注入漏洞。

使用Payload“id=-1+'+OR+LENGTH(DATABASE())=4%23”,成功触发特征匹配,说明该数据库名字的长度为4。

(数据库名字长度为4)

使用Payload“-1'+OR+ASCII(SUBSTRING(DATABASE(),1,1))=100%23”,成功触发特征匹配,说明该数据库名字的第一位为d,因为d对应ASCII中的数字100。

(数据库名字第一位为d)

说明网站确实存在布尔型SQL盲注漏洞。

HTTP抓包测试工具中的特征检查模块基础的使用方法和流程已经介绍完毕。HTTP抓包测试工具中的特征检查模块解决了以下问题:

THE END
1.SQL注入漏洞批量检查工具SQLMC(SQL注入大规模检查器)是一款用于扫描域中是否存在SQL注入漏洞的工具。它会抓取给定的URL直至指定深度,检查每个链接是否存在SQL注入漏洞,并报告其发现的结果。 工具特征 扫描域名中是否存在SQL注入漏洞爬取给定的URL直到指定深度检查每个链接的所有GET参数是否存在SQL注入漏洞报告漏洞以及服务器信息和深度 http://www.360doc.com/content/24/1218/19/77981587_1142310547.shtml
2.SQL注入MicrosoftLearn威胁和漏洞缓解(数据库引擎) 使用英语阅读 保存 添加到集合 添加到计划 通过 Facebookx.com 共享LinkedIn电子邮件 打印 项目 2012/04/01 本文内容 验证所有输入 在代码中检查 SQL 注入 请参阅 SQL 注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后将该字符串传递到 SQL Server 的实例以进行https://msdn.microsoft.com/zh-cn/library/ms161953.aspx
3.判断注入点的方法5.观察HTTP头信息:HTTP头信息中可能包含参数信息,可以通过修改参数来检测是否存在注入漏洞。 以上是几种常用的判断注入点的方法,通过综合运用可以更加快速准确地找到注入点,提高攻击的成功率。同时,为了避免注入攻击,我们也需要在系统开发时加强防御措施,规范输入参数,使用参数化查询等方式防止注入攻击的发生。?https://wenku.baidu.com/view/4180dd2f28160b4e767f5acfa1c7aa00b42a9d13.html
4.检测SQL注入的方法有哪些问答检测SQL 注入的方法主要包括以下几种: 输入验证:对用户提供的数据进行验证,确保其符合预期的格式和类型。例如,只允许数字输入到需要数字的字段中,或者使用正则表达式来匹配合法的输入模式。 参数化查询:使用参数化查询可以将用户提供的数据与 SQL 语句的结构分开,从而防止攻击者通过注入恶意代码来改变 SQL 语句的结构。https://www.yisu.com/ask/99066343.html
5.SQL注入检测工具及方法,黑客零基础入门SQL注入检测是通过各种手段来识别和验证应用程序是否容易受到SQL注入攻击的方法。 SQL注入原理 SQL注入(SQL Injection)是一种利用应用程序对用户输入的不当处理而导致的安全漏洞。攻击者通过在输入中注入恶意的SQL代码,成功执行数据库查询,甚至执行未经授权的数据库操作。SQL注入的原理可以通过以下几个步骤来理解: https://blog.csdn.net/kailiaq_1/article/details/135066418
6.检查sql注入工具类javasql注入检测爆数据库 爆表 爆字段 爆数据 提示 以下均使用如下靶场: SQL手工注入漏洞测试(Sql Server数据库) 判断注入点 与mysql注入一致 ?id=2 and 1=2 1. 判断数据库类型 and exists (select * from sysobjects)--返回正常为mssql and exists (select count(*) from sysobjects)--有时上面那个语句不行就试试这个https://blog.51cto.com/u_16213580/8711201
7.防范注入式攻击11篇(全文)1. SQL注入攻击检测方法。 SQL注入攻击检测分为入侵前的检测和入侵后的检测, 入侵前检测可以手工测试也可以通过软件检测, 入侵后检测主要是针对日志的检测。 (1) 数据库检查。使用HDSI、NBSI和Domain等SQL注入攻击软件工具进行SQL注入攻击后, 都会在数据库中生成一些临时表。通过查看数据库中最近新建表的结构和内容,https://www.99xueshu.com/w/ikeyeyy47maw.html
8.SQL注入的检测方式有几种?常用方法介绍!常用方法介绍! SQL注入攻击是黑客对数据库进行攻击的常用手段之一,范围广、实现容易、破坏性大,能够对Web应用造成一定的数据泄露,那么你知道如何检查网站是否存在SQL注入漏洞吗?请看下文: SQL注入的检测方式有几种? SQL注入的检测方式目前主要分为两大类:动态检测和静态检测,以下是详细的内容介绍:https://blog.itpub.net/69952527/viewspace-2839345/
9.SQLMAP注入检查方法11种常见SQLMAP使用方法详解工具使用一共有11种常见SQLmap使用方法: 一、SQLMAP用于Access数据库注入 (1) 猜解是否能注入 win: python sqlmap.py -u "http://www.xxx.com/en/CompHonorBig.asp?id=7" Linux : .lmap.py -u "http://www.xxx.com/en/CompHonorBig.asp?id=7" https://www.jb51.net/hack/631963.html
10.初学者必备的Web渗透资料详解SQL注入:通过在Web表单中输入恶意SQL语句,攻击者可以绕过身份验证和访问控制,从而读取或修改数据库中的数据。 跨站脚本攻击(XSS):攻击者通过向Web页面插入恶意脚本,当其他用户访问这些页面时,脚本会在用户浏览器中执行,从而窃取用户信息或控制用户浏览器。 跨站请求伪造(CSRF):攻击者利用用户的身份验证信息,伪造请求,使https://www.imooc.com/article/358369
11.SQL注入攻击检测的方法以及装置与流程1.本技术涉及web安全领域,更具体地,涉及一种结构化查询语句sql注入攻击检测的方法、装置以及计算设备。 背景技术: 2.结构化查询语言(structured query language,sql)注入攻击是黑客对数据库进行攻击的常用手段之一。sql注入漏洞可能会影响使用sql数据库的任何网站或web应用程序。犯罪分子可能会利用它来未经授权访问用户的https://www.xjishu.com/zhuanli/55/202010651207.html
12.网站常见漏洞检测方法(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。 (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 (8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。https://wxzx.gsupl.edu.cn/info/1204/1420.htm
13.渗透测试之sql注入总之一句话:注入产生的原因是接受相关参数未经处理直接带入数据库查询操作。 注入前的准备及注入漏洞检测: 1、显示友好HTTP错误信息(现在浏览器不用管) 2、手工检测SQL注入点 最常用的SQL注入点判断方法,是在网站中寻找如下形式的网页链接。 http://www.***.com/***.asp?id=xx (ASP注入)(其他语言等https://www.jianshu.com/p/9fd42647bf22
14.基于机器学习的电网虚假数据注入攻击检测方法研究虚假数据注入攻击(FDIAs)作为一种新型电力系统网络攻击,可以成功绕过不良数据检测机制,使电力量测数据发生偏移,在极其隐蔽的条件下误导控制中心操作,严重威胁电力系统稳定运行。传统的检测方法难以检测这种攻击,为保证智能电网的运行安全,本文通过分析虚假数据注入攻击机理,利用机器学习在处理二分类问题上的优势,以监督学习https://cdmd.cnki.com.cn/Article/CDMD-10188-1019121108.htm
15.sql注入如何挖掘(一)1、使用请求头提交数据,比如检测HTTP中的源地址、主机IP等。 是否回显 显注 1、前端页面可以回显用户信息,比如 联合注入、报错注入。 盲注 1、前端页面不能回显用户信息,比如 布尔盲注、时间盲注。 危害 1、数据库信息泄露。 2、网页篡改:登陆后台后发布恶意内容。 3、网站挂马 : 当拿到webshell时或者获取到服务https://xz.aliyun.com/t/12149
16.快速学习利用sqlmap扫描检测sql注入漏洞,挖掘及攻击测试-- 快速学习利用sqlmap扫描检测sql注入漏洞,挖掘及攻击测试 【官网】:https://sqlmap.org/ 应用场景 sqlmap是一个开源的渗透测试工具,可以用来进行自动化数据库指纹识别,数据库枚举,数据提取,访问目标文件系统,并在获取完全的操作权限执行任意命令。目前支持数据库有mysql、oracle、access、postagesql、sql server、sqlitehttps://config.net.cn/producttest/3f96a311-9b37-43bc-83a6-4ca6565c3ffb-p1.html
17.防止SQL注入攻击的10种有效方法(防止SQL注入)SQL注入是一种常见的网络安全威胁,攻击者通过在用户输入中插入恶意的SQL代码,从而可以执行未经授权的数据库操作。这些方法包括使用参数化查询、输入验证和过滤、存储过程、最小权限原则、ORM框架、准备语句、安全的数据库连接、避免动态拼接SQL语句、使用防火墙和入侵检测系统以及定期更新和维护数据库软件。通过采取这些预防https://www.yundun.com/document/news/1012