2019-12-19

buuctf 刷题开始~撒花★,°:.☆( ̄▽ ̄)/$:.°★

1.摩丝

被坑了一小下,解出来是


image.png

但是它不对,然后查了一下正确的摩尔斯电码发现全是大写……我??行叭你说得对。无语

image.png

2.lmhash

buuctf Windows系统密码和权限获得第一步都是系统中的密码使用hash加密。

先看看linux中的:

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。

/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

同 /etc/passwd 文件一样,文件中每行代表一个用户,同样使用 ":" 作为分隔符,不同之处在于,每行用户信息被划分为 9 个字段。每个字段的含义如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

重点:加密密码字段

这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。

注意,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 "!"、"*" 或 "x" 使密码暂时失效。

所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。

Windows hash由二部分组成,分别是LM HASH&NT HASH。Windows系统关于hash的组成如下:

用户名称:RID: LM-HASH值:NT-HASH值

LM HASH生成规则:

1.用户的密码被限制为最多14个字符。

2.用户的密码转换为大写。

3.系统中用户的密码编码使用了OEM内码页

4.密码不足14字节将会用0来补全。

5.固定长度的密码被分成两个7byte部分。每部分转换成比特流,再分组,每7bit为一组并且末尾加0,组成新的编码

6.以上步骤得到的8byte二组,分别作为DES key为“KGS!@#$%”进行加密。

7.将二组DES加密后的编码拼接,得到最终LM HASH值。

NT hash生成原理

IBM设计的LM Hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自己的挑战响应机制,NTLMHash便应运而生。假设明文口令是”123456",首先转换成Unicode字符串,与LMHash算法不同,这次不需要添加0补足14字节

“123456"->310032003300340035003600

从ASClI串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协议时就没考虑过big-endian序,ntoh0、hton0函数不宜用在SMB报文解码中。0×80之前的标准ASCII码转换成Unicode码,就是简单地从0x变成0×00。此类标准ASCIl串按little-endian序转换成Unicode串,就是简单地在原有每个字节之后添加0×00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值,16字节310032003300340035003600-进行标准MD4单向哈希-

32ED87BDB5FDC5E9 CBA88547376818D4,就得到了最后的NTLM Hash

NTLM Hash:32ED87BDB5FDC5E9CBA88547376818D4

你可能感兴趣的:(2019-12-19)