文档详情

SQL注入和盲注.pdf

发布:2017-04-16约1.27万字共7页下载文档
文本预览下载声明
讲解 SQL 盲注 SQL 注入大家都知道,很多新人都是从这里入门的,虽然注入语句倒背如流,可是其原理估 计很少有人了解。稍微了解一下的也仅仅只是知道 SQL 注入语句只是一种为了使我们获取信 息的一种畸形语句。Ps(很多人不知道 SQl 注入与 SQL 盲注的区别,现在我告诉你,没有区 别。) 首先我先讲讲微软对 SQL 注入的定义。 (1) 脚本注入式的攻击 (2) 恶意用户输入用来影响被执行的 SQL 脚本 相信大家都看的懂。 另外,我看到很多新手都在网上发求助帖说什么求“asp 下 sql 注入教程“等等 我在这里强调一下,SQL 注入的划分是以数据库种类划分的而不是动态脚本语言。 而且就算数据库种类不同 SQL 语句的大致形式与思路是相同的,一通百通就看你自己舍不舍 得去钻了。 好啦。科普到此结束现在开始正式的讲解。 1. 判断数据类型 常用的漏洞辨别语句是 and 1=1,and 1=1 只是应用到实战中你绝对会发现不够用。 判断 SQL 注入漏洞第一件事就是判断像数据库递交的数据类型。 show.asp?showID=123 第一反应是数字型,因为无论是字符型还是数字型都会报错。事实上也绝大多数就是数字型, 但是如果是字符型那么你的注入路程就断在这里了。因为你递交给数据库的注入语句会是这 样 123 注入语句 被引号包起来的语句是不会被执行的。所以在注入之前第一件事是判断数据类型。 辨别方法很简单 show.asp?showID=12‘+’3 或 show.asp?showID=12‘’3 如果没有报错,那必然是字符串型的注入点、 字符型注入点的注入其实与数字型基本上是一样的只要注意引号闭合问题。 在接下来的讲解中我不会单独讲解字符串型的注入只会讲解数字型,至于这么转换你们的事。 如果不是字符型而是数字型。但是又被防注程序屏蔽了 and,等关键词。除了可以用大小写, 十六进制,ascii 码,URL 码等方式绕过,你还可以用下面那这些方式判断注入点是否存在。 show.asp?showID=123 show.asp?showID=122+1 2.注入点类型除了分为数字型和字符形还可以分为 get,post,cookies 型。其辨别方式我不 再详述。但是因为后面两种注入点手工操作过于麻烦如果注入点的脚本语言我一般会使用软 件来进行中转,很多人知道 cookies 型注入点可以中转其实 post 型注入也可以中转。我把软 件名我会在最后告诉大家,至于怎么用自己百度。 现在开始讲:实施注入 在确定注入点存在之后我们作为攻击者必然要对网站系统进行各种信息刺探用以识别和了 解网站的使用的数据库种类以及防注程序的结构、在了解到这些信息之后我们就需要确定符 合 SQL 语法的注入请求表达式,判断出后台数据库的类型,然后构造出所需的利用代码。 但在此之前我们需要确定正确的注入句法 这是 SQL 盲注攻击中最难也最有技巧的步骤,如果最初的 SQL 请求语句很简单,那么确 定正确的注入语法也相对容易,而如果最初的 SQL 请求语句较复杂或者服务器的限制较多, 那么要想突破其限制就需要多次的尝试,但进行这些尝试所需要的基本技术却是非常简单。 对于一些注入利用,仅仅改变 WHERE 语句就足够了,但对于其他情况,比如 UNION SELECT 注入或存储过程(stored procedures)注入,还需要能先顺利地结束整个 SQL 请求语句,然 后才能添加其他攻击者所需要的 SQL 语句。在这种情况下,攻击者可以选择使用 SQL 注 释符号来结束语句,该符号是两个连续的破折号(--),它要求 SQL Server 忽略其后同一行 的所有输入。例如,一个登录页面需要访问者输入用户名和密 码,并将其提交给 SQL 请求语句: SELECT Username, UserID, Password FROM Users WHERE Username = ‘user’ AND Password = ‘
显示全部
相似文档