黑海洋Wiki | AI机器人硬件开发 | 网络安全攻防实战 | 区块链技术文档教程 - 免费资源平台 - 盲注
type: channel
link: https://blog.upx8.com/tag/%E7%9B%B2%E6%B3%A8/
items: 详解SQL盲注测试高级技巧
items: 用SQLMap进行SQL盲注测试

详解SQL盲注测试高级技巧
type: item
date: 2014-04-15T12:47:54+08:00
description: .encrypted-content { background: linear-gradient(135deg, #fdfeff, #f3f9ff); padding: 20px; border: 2px dashed #76c7e6; border-radius: 12px; margin: 15px 0; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); color: #007bff; text-align: center; position: relative; overflow: hidden; transition: all 0.3s ease; } .encrypted-content:before { content: "🐸🤔 🤐 😄 🤣 😂 😝 🤑"; position: absolute; top: -10px; left: 50%; transform: translateX(-50%); font-size: 30px; color: #007bff; opacity: 0.2; z-index: 0; } .encrypted-content:hover { background: linear-gradient(135deg, #d6ecff, #cce8ff); border-color: #54aed8; transform: scale(1.02); box-shadow: 0 6px 10px rgba(0, 0, 0, 0.15); } .encrypted-content span { display: inline-block; position: relative; z-index: 1; animation: fadeIn 1.5s infinite; } @keyframes fadeIn { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } } 写在前面： 这篇文章主要写了一些加快盲注速度的技巧和盲注中比较精巧的语句，虽然注入并不是什么新技术了。但是数据库注入漏洞依然困扰着每一个安全厂商，也鞭策着每一个安全从业者不断前进。 正文： 首先来简单介绍一下盲注，盲注是不能通过直接显示的途径来获取数据库数据的方法。在盲注中，攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同，也可以是响应时间不同)。一般情况下，盲注可分为三类。Booleanbase Timebase Errorbase其中第一类Boolean就是我们最常接触到的普通盲注。 比如在where语句中可以构造or 1=1来使返回页面不同。(这里用mysql演示一下，大家体会就好)mysql> select 123 from dual where 1=1; +-----+ | 123 | +-----+ | 123 | +-----+ 1 row in set (0.00 sec) mysql> select 123 from dual where 1=0; Empty set (0.00 sec)如果注入点在order by后面，那么则可以使用判断语句来构造报错。（其实order by后面的注入也可以根据返回结果的顺序来判断，这里自由发挥就好：P）mysql> select 1 from te order by if(1,1,(select 1 union select 2)) limit 0,3; +---+ | 1 | +---+ | 1 | | 1 | | 1 | +---+ 3 rows in set (0.00 sec) mysql> select 1 from te order by if(0,1,(select 1 union select 2)) limit 0,3; ERROR 1242 (21000): Subquery returns more than 1 row基于时间的盲注的话，mysql主要涉及两个函数，sleep banchmark 基本是使用如下。mysql> select 1 from te where if(1=1,sleep(1),1) limit 0,1; Empty set (27.00 sec) mysql> select 1 from te where if(1=2,sleep(1),1) limit 0,1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.00 sec)基于报错的盲注，需要网站显示数据库报错信息，后面会有详细阐述。 知道了怎么判断ture or false之后就是获取数据了，当然你可以暴力测试每一个ascii码，不过这需要很多次尝试…

用SQLMap进行SQL盲注测试
type: item
date: 2014-04-15T12:43:21+08:00
description: .encrypted-content { background: linear-gradient(135deg, #fdfeff, #f3f9ff); padding: 20px; border: 2px dashed #76c7e6; border-radius: 12px; margin: 15px 0; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); color: #007bff; text-align: center; position: relative; overflow: hidden; transition: all 0.3s ease; } .encrypted-content:before { content: "🐸🤔 🤐 😄 🤣 😂 😝 🤑"; position: absolute; top: -10px; left: 50%; transform: translateX(-50%); font-size: 30px; color: #007bff; opacity: 0.2; z-index: 0; } .encrypted-content:hover { background: linear-gradient(135deg, #d6ecff, #cce8ff); border-color: #54aed8; transform: scale(1.02); box-shadow: 0 6px 10px rgba(0, 0, 0, 0.15); } .encrypted-content span { display: inline-block; position: relative; z-index: 1; animation: fadeIn 1.5s infinite; } @keyframes fadeIn { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } }简介本文主要关注SQL注入，假设读者已经了解一般的SQL注入技术，在我之前的文章中有过介绍，即通过输入不同的参数，等待服务器的反应，之后通过不同的前缀和后缀（suffix and prefix ）注入到数据库。本文将更进一步，讨论SQL盲注，如果读者没有任何相关知识储备，建议先去wikipedia学习一下。在继续之前需要提醒一下，如果读者也想要按本文的步骤进行，需要在NOWASP Mutillidae环境搭建好之后先注册一个NOWASP Mutillidae帐号。SQL注入前言本文演示从web界面注入SQL命令的方法，但不会直接连接到数据库，而是想办法使后端数据库处理程序将我们的查询语句当作SQL命令去执行。本文先描述一些注入基础知识，之后讲解盲注的相关内容。Show Time这里我以用户名“jonnybravo”和密码“momma”登录，之后进入用户查看页面，位于OWASP 2013 > A1 SQL Injection > Extract data > User Info。要查看用户信息，需要输入用户ID与密码登录，之后就可以看到当前用户的信息了。如我之前的文章所提到的那样，这个页面包含SQL注入漏洞，所以我会尝试各种注入方法来操纵数据库，需要使用我之前文章提到的后缀（suffix）与前缀（prefix）的混合。这里我使用的注入语句如下：Username: jonnybravo’ or 1=1; –该注入语句要做的就是从数据库查询用户jonnybravo，获取数据后立刻终止查询（利用单引号），之后紧接着一条OR语句，由于这是一条“if状态”查询语句，而且这里给出 “or 1＝1”，表示该查询永远为真。1=1表示获取数据库中的所有记录，之后的;–表示结束查询，告诉数据库当前语句后面没有其它查询语句了。图1 正常方式查看用户信息将payload注入后，服务器泄露了数据库中的所有用户信息。如图2所示：图2 注入payload导致数据库中所有数据泄露至此，本文向读者演示了一种基本SQL注入，下面笔者用BackTrack和Samurai 等渗透测试发行版中自带的SQLmap工具向读者演示。要使用SQLmap，只需要打开终端，输入SQLmap并回车，如下图所示：如果读者首次使用SQLmap，不需要什么预先操作。如果已经使用过该工具，需要使用—purge-output选项将之前的输出文件删除，如下图所示：图3 将SQLmap output目录中的原输出文件删除本文会演示一些比较独特的操作。通常人们使用SQLmap时会直接指定URL，笔者也是用该工具分析请求，但会先用Burp查看请求并将其保存到一个文本文件中，之后再用SQLmap工具调用该文本文件进行扫描。以上就是一些准备工…