SQL 盲注

SQL注入-盲注(布尔盲注与时间盲注) 一、什么是盲注 盲注就是在sql注入过程中,sql语句执行select之后,可能由于网站代码的限制或者apache等解析器配置了不回显数据,造成在select数据之后不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个判断的过程称之为盲注。 通俗的讲就是在前端页面没有显示位,不能返回sql语句执行错误的信息,输入正确和错误返回的信息都是一致的,这时候我们就需要使用页面的正常与不正常显示来进行sql注入。 二、盲注的分类 基于布尔类型的盲注 基于时间类型的盲注 三、利用盲注的 阅读详情

文章来自IBM Security AppScan Standard生成的检测报告。

■ SQL 盲注

一般
有多种减轻威胁的技巧:
[1] 策略:库或框架
使用不允许此弱点出现的经过审核的库或框架,或提供更容易避免此弱点的构造。
[2] 策略:参数化
如果可用,使用自动实施数据和代码之间的分离的结构化机制。这些机制也许能够自动提供相关引用、编码和验证,而不是依赖于开发者在生成输出的
每一处提供此能力。
[3] 策略:环境固化
使用完成必要任务所需的最低特权来运行代码。
[4] 策略:输出编码
如果在有风险的情况下仍需要使用动态生成的查询字符串或命令,请对参数正确地加引号并将这些参数中的任何特殊字符转义。
[5] 策略:输入验证假定所有输入都是恶意的。使用“接受已知善意”输入验证策略:严格遵守规范的可接受输入的白名单。拒绝任何没有严格遵守规范的
输入,或者将其转换为遵守规范的内容。不要完全依赖于通过黑名单检测恶意或格式错误的输入。但是,黑名单可帮助检测潜在攻击,或者确定哪些输
入格式不正确,以致应当将其彻底拒绝。
.Net
以下是保护 Web 应用程序免遭 SQL 注入攻击的两种可行方法:
[1] 使用存储过程,而不用动态构建的 SQL 查询字符串。 将参数传递给 SQL Server 存储过程的方式,可防止使用单引号和连字符。
以下是如何在 ASP.NET 中使用存储过程的简单示例:
' Visual Basic example
Dim DS As DataSet
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter
Dim SelectCommand As String = "select * from users where username = @username"
...
MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@username", SqlDbType.NVarChar, 20))
MyCommand.SelectCommand.Parameters("@username").Value = UserNameField.Value
// C# example
String selectCmd = "select * from Authors where state = @username";
SqlConnection myConnection = new SqlConnection("server=...");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@username", SqlDbType.NVarChar, 20));
myCommand.SelectCommand.Parameters["@username"].Value = UserNameField.Value;


[2] 您可以使用验证控件,将输入验证添加到“Web 表单”页面。 验证控件提供适用于所有常见类型的标准验证的易用机制 - 例如,测试验证日期是否有
效,或验证值是否在范围内 - 以及进行定制编写验证的方法。此外,验证控件还使您能够完整定制向用户显示错误信息的方式。验证控件可搭配“Web
表单”页面的类文件中处理的任何控件使用,其中包括 HTML 和 Web 服务器控件。
为了确保用户输入仅包含有效值,您可以使用以下其中一种验证控件:
2014/7/21 42
a. “RangeValidator”:检查用户条目(值)是否在指定的上下界限之间。 您可以检查配对数字、字母字符和日期内的范围。
b. “RegularExpressionValidator”:检查条目是否与正则表达式定义的模式相匹配。 此类型的验证使您能够检查可预见的字符序列,如社会保险号
码、电子邮件地址、电话号码、邮政编码等中的字符序列。
重要注意事项:验证控件不会阻止用户输入或更改页面处理流程;它们只会设置错误状态,并产生错误消息。程序员的职责是,在执行进一步的应用程
序特定操作前,测试代码中控件的状态。
有两种方法可检查用户输入的有效性:
1. 测试常规错误状态:
在您的代码中,测试页面的 IsValid 属性。该属性会将页面上所有验证控件的 IsValid 属性值汇总(使用逻辑 AND)。如果将其中一个验证控件设置为无
效,那么页面属性将会返回 false。
2. 测试个别控件的错误状态:
在页面的“验证器”集合中循环,该集合包含对所有验证控件的引用。然后,您就可以检查每个验证控件的 IsValid 属性。
J2EE
** 预编译语句:
以下是保护应用程序免遭 SQL 注入(即恶意篡改 SQL 参数)的三种可行方法。 使用以下方法,而非动态构建 SQL 语句:
[1] PreparedStatement,通过预编译并且存储在 PreparedStatement 对象池中。 PreparedStatement 定义 setter 方法,以注册与受支持的 JDBC SQL
数据类型兼容的输入参数。 例如,setString 应该用于 VARCHAR 或 LONGVARCHAR 类型的输入参数(请参阅 Java API,以获取进一步的详细信
息)。 通过这种方法来设置输入参数,可防止攻击者通过注入错误字符(如单引号)来操纵 SQL 语句。
如何在 J2EE 中使用 PreparedStatement 的示例:
// J2EE PreparedStatemenet Example
// Get a connection to the database
Connection myConnection;
if (isDataSourceEnabled()) {
// using the DataSource to get a managed connection
Context ctx = new InitialContext();
myConnection = ((DataSource)ctx.lookup(datasourceName)).getConnection(dbUserName, dbPassword);
} else {
try {
// using the DriverManager to get a JDBC connection
Class.forName(jdbcDriverClassPath);
myConnection = DriverManager.getConnection(jdbcURL, dbUserName, dbPassword);
} catch (ClassNotFoundException e) {
...
}
}
...
try {
PreparedStatement myStatement = myConnection.prepareStatement("select * from users where username = ?");
myStatement.setString(1, userNameField);
ResultSet rs = myStatement.executeQuery();
...
rs.close();
} catch (SQLException sqlException) {
...
} finally {
myStatement.close();
myConnection.close();
}

Kali渗透测试之DVWA系列(四)——使用Burp Suite进行SQL Injection(Blind)(SQL盲注,包括盲注脚本) 目录: 一、SQL盲注 SQL盲注与SQL注入的区别; SQL盲注的过程; 二、实验环境 三、实验过程 基于布尔值的盲注; 基于时间的盲注; 一、SQL盲注简介 1、SQL盲注: 盲注:SQL Injection(Blind),即SQL盲注,目标只会回复是或不是,没有详细内容; 注入:可以查看详细的内容 2、手工盲注思路: 手工盲注的过程,就像你和机器人聊天一样,这个机器人知道的... 阅读详情

相关推荐

SQL 盲注方法总结

文章目录1,布尔盲注---构造逻辑判断①left(database(),1)②ascii(substr())=n③2,报错盲注①concat()floor(x)rand()②使用exp进行SQL报错注入③bigint溢出注入④xpath函数报错注入 1,布尔盲注—构造逻辑判断 ①left(database(),1) ②ascii(substr())=n ③ 2,报错盲注 基于报错的SQL盲注---...

junmin_lay的博客 2557

CVE-2022-28111(Mybatis-Pagehelper)

CVE-2022-28111(Mybatis-Pagehelper)分页插件漏洞

一支花傲寒的博客 4248

Linux与Windows双系统,安装完linux后无法通过grub进入Windows的解决方法

先装Windows 10,Windows可正常启动,再装Kali,Kali提示装grub后照装。然而装完后重启发现无Windows选项。

sakurashockwave的博客 6454

关于PageHelper的动态代理是向sql注入limit字段还是代理java层的问题

结论:pagehelper是动态代理mybatis的底层拼接sql,而不是从java层处理数据。 验证过程: 将如下配置加入application.yml文件中,目的是在控制台打印sql mybatis: mapper-locations: classpath:mapper/*Mapper.xml ##打印sql configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #showSql .

与君初相识,犹如故人归。 978

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3851

别再怕非观测区了!手把手教你用移相法搞定PMSM单电阻FOC的电流重构难题

本文详细解析了永磁同步电机(PMSM)单电阻FOC系统中非观测区的电流重构难题,重点介绍了移相法的工程实践。通过STM32平台的具体实现和调试指南,帮助工程师有效解决相电流检测中的采样窗口不足问题,提升系统稳定性和性能。

weixin_27252001的博客 433

WEB安全基础-SQL注入演示

这个是下面演示的源码,看链接地址找对应文件 http://download.youkuaiyun.com/download/qq78442761/10224681 本次演示SQL注入 首先进入login.html。源码在上面的链接有 首先正常登录用户名密码都是admin   密码不对时:        下面演示下SQL注入     发送这种情况是因为,先看登录的源码 l

IT1995的博客 6156

企业微信会话存档SDK集成与动态库加载实战

本文详细解析了企业微信会话存档SDK的集成与动态库加载实战,重点解决Windows与Linux环境下动态库加载的差异问题。通过实战案例和优化建议,帮助开发者高效完成企业微信API集成,确保合规存档功能稳定运行。

weixin_26934905的博客 464

MyBatis分页插件PageHelper的使用及特殊字符的处理

MyBatis分页插件PageHelper的使用及特殊字符的处理,PageHelper的简介及使用,特殊字符的几种处理方式,使用CDATA 区段

weixin_74268571的博客 2898

Qt 插件开发 plugin 超详细 有源码

Qt 插件化开发框架类似于前后端的微服务的场景,授权哪个微服务则前端可以使用哪个微服务,插件就行硬件插卡一样,可以被随时删除、插入和修改,所以结构很灵活,容易修改,方便软件的升级和维护;插件主要面向接口编程,无需访问.lib文件,热插拔、利于团队开发。即使在程序运行时.dll不存在,也可以正常启动,只是相应插件功能无法正常使用而已;动态库需要访问.lib文件,而且在程序运行时必须保证.lib存在,否则无法正常启动;

q610098308的专栏 6544

英飞凌 AURIX TC3XX 系列单片机的 NVM-Flash 介绍

简单介绍英飞凌 AURIX TC3XX 系列多核单片机的 Flash,便于快速上手使用

大橙子的博客 6637

解决sqlmap对排序自动进行注入

解决分页排序字段的SQL注入

qq_51454780的博客 544

机器学习实战7-基于机器学习算法预测相亲成功率

大家好,我是微学AI,今天给大家介绍一下机器学习实战7-基于机器学习算法预测相亲成功率,随着社会的发展,大家都忙于事业,对自己的终身大事就耽搁了,相亲是一种传统的寻找伴侣的方式,随着时代的发展,相亲的方式也在不断地改变。在这个过程中,了解相亲双方的信息以及预测相亲是否成功变得越来越重要。本文将介绍如何使用随机森林算法对相亲成功进行预测,通过分析男女双方的房子、车子、长相、家庭条件、父母情况、生活习惯、学历、性格、兴趣等因素,来预测相亲是否成功。

微学AI的博客 3032

SQL盲注(原理概述、分类)

盲注原理 盲注的分类 盲注常用函数 盲注的利用方法 一、SQL盲注概述 1.如果数据库运行返回结果时只反馈对错不会返回数据库中的信息 此时可以采用逻辑判断是否正确的盲注来获取信息。 2.盲注是不能通过直接显示的途径来获取数据库数据的方法。 盲注可以分为三类: 布尔盲注 时间盲注 报错型盲注 1、布尔盲注 盲注查询是不需要返回结果的,仅判断语句是否正常执行即可,所以其返回可以看到一个布尔值,正常显示为true,报错或者是其他不正常显示为False 查询语句: SELECT userid FROM ne

小赵同学的博客 2万+

基于FreeRedis实现的.NET Redis客户端缓存缓存键条件优雅过滤

在.NET开发中,使用Redis作为缓存解决方案是很常见的。FreeRedis是一个功能强大的Redis客户端库,它提供了丰富的功能和灵活性,使我们能够轻松地与Redis进行交互。在本文中,我们将探讨如何使用FreeRedis实现缓存键条件的优雅过滤,以提高缓存的效率和准确性。

RzuScala的博客 328

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SQL注入之盲注

SQL注入之盲注前言一、盲注分类二、具体解析1.基于布尔的sql盲注首先要先了解一下sql注入截取字符串常用的函数:(1)mid()函数(2)substr()函数(3)left()函数具体注入方法2.基于时间的SQL盲注3.基于报错的SQL盲注1.extractvalue()函数2.uodatexml()函数3.floor()函数 前言 何为盲注?盲注就是在 sql 注入过程中,sql 语句执行的选择后,选择的数据不能回显 到前端页面 一、盲注分类 盲注分为三类: (1)基于布尔的SQL盲注 (2)基于事

xiao_he0123的博客 7665

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Bugku sql注入 基于布尔的SQL盲注

sql注入:

plant1234的博客 5316

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

DVWA——sql盲注

一、盲注 与sql注入区别: 盲注只回复是或否,Sql注入回复详细信息; 过程: 1、判断是否存在注入,注入时字符型还是数字型 2、猜解数据库的长度,猜解数据库的名称 3、猜解数据库中有几个表,猜解表的长度,猜解表的名称 4、猜解表中有几个字段、猜解字段长度,猜解字段名称 5、猜解数据 类型: 基于布尔型的盲注 基于时间的盲注 基于报错的盲注 二、思路 手工盲注,因为服...

weixin_44743506的博客 2743

sql注入之盲注

sql注入过程中,sql语句执行select之后,可能由于网站代码的限制或者apache等解析器配置了不回显数据,造成在select数据之后不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个判断的过程称之为盲注。简单来说就是页面没有报错回显,不知道数据库具体返回值的情况下,对数据库中的内容进行猜解,实现sql注入。web页面只返回True,False两种值。利用页面返回不同,逐个猜解数据1、布尔盲注不推荐使用手注但也需要了解其payload的构造;

2301_80913334的博客 3095

初识SQL盲注

SQL盲注 VS 普通SQL注入: 普通SQL注入 SQL盲注 1.执行SQL注入攻击时,服务器会响应来自数据库服务器的错误信息,信息提示SQL语法不正确等 2.一般在页面上直接就会显示执行sql语句的结果 1.一般情况,执行SQL盲注,服务器不会直接返回具体的数据库错误or语法错误,而是会返回程序开发所设置的特定信息(也有特例,如基于报错的盲注) 2.一般在...

qq_43592364的博客 2416

DVWA 之 SQL Injection Blind(SQL盲注)

DVWA sql盲注

RexHa的博客 3179

sql盲注的一些小心得

一、关于概念 sql 盲注是对于那些页面没有回显的错误,只能依靠自己的经验去一点一点猜测,这就比较耗费时间了, 具体的一些原理可以参考https://blog.youkuaiyun.com/qq_36706878/article/details/79530211 注:以下例子都是关于实验吧,简单的sql注入3,大家可以自行实验 二、开始实验 (1)、首先我们还是一样判断他是字符型还是数字型,我们发现...

微笑的孤狼 1万+

SQL盲注

盲注 在SQL注入过程中,SQL语句执行后,选择的数据不能回显到前端页面,此时需要利用一些方法进行判断或者尝试,这个过程称之为盲注。 在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同)。一般情况下,盲注可分为两类: 基于布尔的盲注(Boolean based) 基于时间的盲注(Time based) 基于布尔的盲注 某些场合下,页面返回的结果只有两种(正常或错误) 。通过构造SQL判断语句,查看页面的返回结果(True or False)来判断哪些S

weixin_59872639的博客 2744

SQL注入2——盲注(重学)

SQL注入2——布尔型盲注(重学)

qq_52263650的博客 4283

SQL注入盲注利用方法

靠 真大佬写的 太太太qiang 辽 !!! 前言 最近做了些基于布尔盲注和基于时间盲注的CTF题,掌握了CTF题中SQL盲注的三种解法,收获很大,于是结合题目分享一下。 BASE-Blind-Inject 题目信息 题干分析 第一次走进误区,刚看到这道题的时候看到了登录框,第一印象应该就是简单的闭合注入,测试后发现是双引号闭合,所以构造payload注入 " or 1=1# 果...

小白渣的博客 2097

sql盲注

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 sql注入--盲注前言一、什么是盲注二、步骤示例1.测试注入点2.测所在数据库长度3. 利用ASCII码猜当前数据库名4.利用ASCII码查询表名5、利用ASCII码查询字段名sql手注所用到的函数总结sqlmap进行sql盲注 前言 靶场环境:sqli-labs-master 第8关 注入攻击的本质:把用户的输入当作代码执行。 其中存在两个关键条件: (1)用户可以控制输入。 (2)用户的输入被拼接到原代码上被执行。 提示:以下是本篇.

weixin_55710577的博客 7747
上一篇: 会话标识未更新
下一篇: Oracle 漏洞修复方案
javaee_ssh
博客等级 码龄18年 42粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值