从两个方面讲解SQL Server口令的脆弱性(2)
发布时间:2009-01-08 13:40:00
2、数据库存储的口令加密算法
SQL Server的口令到数据库存储的加密方法,也是很让人诧异的。其过程如下:
在获得网络解密密码的口令以后在005F9D5A处call SQLSORT_14,实现一个转换为大写口令缓冲进行保存。
然后在004def6d处调用一个函数取出数据库中的加密的PASSWORD,其形式如下:
2个字节的头0x0100(固定)
4个字节的HASH加秘KEY
20个字节的HASH1
20个字节的HASH2
如我取出的一个例子:
fx:0x0100 1751857F DFDEC4FB618D8D18EBA5A27F615639F607
CD46BE DFDEC4FB618D8D18EBA5A27F615639F607CD46BE
固定 补充KEY HASH1 HASH2
口令是:123456
SQL首先用4个字节的HASH加秘KEY补上其两处口令的缓冲,一个为大写,一个为小写。然后其加密过程如下C函数:
CryptAcquireContextW(&hProv,NULL,
L("Microsoft Base Cryptographic Provider v1.0"),1,0xf0000000);
CryptCreateHash(hProv,0x8004,NULL,NULL,&hhash);
CryptCreateHash(hProv,0x8004,NULL,NULL,&hHash);
005F9DFE:
CryptHashData(hhash,passwdbuf,0x12,NULL);
passwdbuf是小写的passwd缓冲区,然后附加一个KEY,如上例子就是对
{'1','2''3''4''5''6',0x17,0x51,0x85,0x7F}
这样的一个字串进行HASH加密
CryptHashData(hHash,PASSWDBUF,0x12,NULL)
;PASSWDBUF是大写的passwd缓冲区,然后附加一个KEY 005F9E3E:
CryptGetHashParam(hhash,2,&passwdout,&outlen,0);
取出passwdbuf是小写的passwd的加密值
CryptGetHashParam(hHash,2,&PASSWDOUT,&OUTLEN,0);
取出passwdbuf是大写的passwd的加密值这两个相加就是真正的数据库中的PASSWORD加密字段.
为什么说以上方法是脆弱的呢?其实其真正的加密长度生成只有20个字节。
小写口令的HASH1+大写口令的HASH1拼接的40位HASH值的安全度还不如一个直接20位的HASH值来得安全。因为大家都知道这两个值的因果关系,
提供给了解密者更多的信息。
如因为其算法一样,如果HASH1=HASH2,就可以判断口令肯定是未使用字母,只使用了数字和符号的口令,如上取出的123456口令的HASH,两个HASH完全相等。
就是使用了字母,其知道补充的KEY,算法,两个加密字串的关系,其解应该也是大大的简化了。


猜你喜欢
- 集合的特性无序、不重复、可迭代常用api创建一个集合需要显式地使用set()方法来声明,如果使用字面量{}来声明解析器会认为这是一个字典。a
- 本文主要给大家介绍了关于CentOS 6.5 安装Python 3.5.2并与Python2并存的相关内容,分享出来供大家参考学习,下面来看
- 本文实例为大家分享了js选项卡切换的具体代码,可以手动切换,另设置定时器可使其自动切换,供大家参考,具体内容如下效果如图:具体代码:<
- 我以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明:vi /usr/local/mysql/bin/m
- 目标在本章中,将学习利用calib3d模块在图像中创建一些3D效果基础在上一节相机校准中,了解了相机矩阵、失真系数等。给定图案图像,可以利用
- 本文实例为大家分享了JavaScript实现前端倒计时效果的具体代码,供大家参考,具体内容如下代码:<!DOCTYPE html>
- 函数嵌套,这个名字有点纠结,也许不太好理解。一个比较常见的函数嵌套特例:递归函数,即函数自己嵌套自己。 一直以为在PHP中不能有太多的函数嵌
- 本文实例讲述了python中查看变量内存地址的方法。分享给大家供大家参考。具体实现方法如下:这里可以使用id>>> pri
- 调用时输入参数如: www.jb51.net/表示删除www.jb51.net首页的缓存, www.jb51.net/test.
- 题目描述1260. 二维网格迁移 - 力扣(LeetCode)给你一个 m 行 n 列的二维网格 grid 和
- 1. 路由概念路由的本质就是一种对应关系,根据不同的URL请求,返回对应不同的资源。那么url地址和真实的资源之间就有一种对应的关系,就是路
- 1. 现在的日期时间命令是<%=now%> 即可2.ASP取得表格(from)数据输入的方法,是使用一个内置
- np.nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数。一般来说,通过help(np.nonzero
- a=1 #1 为对象,def func(x): print('x的地址{}'.form
- Python是很好的爬虫工具不用再说了,它可以满足我们爬取网络内容的需求,那最简单的爬取网络上的图片,可以通过很简单的方法实现。只需导入正则
- 本文主要介绍了在python3.9下如何安装scrapy的方法,分享给大家,具体如下:安装命令:pip install scrapy -i
- div+css实现圆角边框,在网络上查看了一下,很多都是实现圆角的矩形的方法,我在这里介绍的是实现圆角矩形边框的方法。用代码说明问题:<
- 这篇文章主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 导语:用 Python 读取图片的像素值,然后输出到 Excel 表格中,最终形成一幅像素画,也就是电子版的十字绣了。基本思路实现这个需求的
- 一、安装系统和设置中文(一)下载安装KaliLInux2022.1以直接下载虚拟机映像文件为例,下载地址:https://www.kali.