buuctf--wp
Crypto
权限获得第一步:
看样子是windows系统存储用户密码哈希值的格式,密文一般存储在C:\Windows\System32\config\SAM文件中,只有具有管理员权限的用户才能通过特定工具(hashdump,pwdump)访问SAM文件,进行密码重置等操作。
下图表示用户名:
用户RID:500(用于标识用户账号)
LM哈希:806EDC27AA52E314AAD3B435B51404EE
NTLM哈希:F4AD50F57683D4260DFD48AA351A17A8
对哈希值进行解密,LM哈希值无法解密,NTLM哈希解密得到即为flag
补充:LM哈希和NTLM哈希
LM 哈希用于 Windows 早期版本,是一种不安全的哈希算法,因此现代Windows系统默认禁用了LM哈希,或者仅当密码长度超过14个字符时才使用它。当用户密码长度小于15个字符时,它将用户密码转换为大写(这也导致了LM哈希对大小写不敏感),并截断到 14 个字符,再使用 DES(数据加密标准)算法加密。
NTLM Hash 是基于 MD4 算法计算出的哈希值,密码以 Unicode 形式输入并进行哈希处理。这种哈希算法比 LM Hash 更安全,但仍然容易受到暴力破解的威胁,特别是对于弱密码。
Windows系统密码:
与上题类似
第一个用户密码解密为空密码,经过尝试第二个用户的NTLM Hash解密为flag。
补充:MD5加密原理
- 数据填充:对输入数据进行填充,使其长度达到一个特定的长度,以便使原始数据的长度可以被512整除。填充的方法是在原始数据后面添加一个“1”,然后添加足够数量的“0”,使其字节长度对512求余数的结果等于448,最后添加一个64位的整数表示原始数据的长度。
- 初始化缓冲区:MD5算法使用了一个128位的缓冲区,分为四个32位部分,用来存储中间结果和最终结果。这四个部分被初始化为特定的常数。
- 处理分组:填充后的数据被划分为长度为512位的分组,每个分组又划分为16个32位的子分组。然后,通过一系列的位操作和模加运算,每个分组都被处理并更新缓冲区的内容。
- 输出:处理完所有分组后,缓冲区中的内容就是最终的哈希值。这个哈希值是一个128位的数,通常表示为32个十六进制数。