buuctf 刷題開始~撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。
1.摩絲
被坑了一小下皱炉,解出來是
但是它不對,然后查了一下正確的摩爾斯電碼發(fā)現(xiàn)全是大寫……我溪厘?胡本?行叭你說得對。無語
2.lmhash
buuctf Windows系統(tǒng)密碼和權(quán)限獲得第一步都是系統(tǒng)中的密碼使用hash加密畸悬。
先看看linux中的:
/etc/shadow 文件侧甫,用于存儲(chǔ) Linux 系統(tǒng)中用戶的密碼信息,又稱為“影子文件”。
/etc/shadow 文件只有 root 用戶擁有讀權(quán)限披粟,其他用戶沒有任何權(quán)限咒锻,這樣就保證了用戶密碼的安全性。
同 /etc/passwd 文件一樣守屉,文件中每行代表一個(gè)用戶惑艇,同樣使用 ":" 作為分隔符,不同之處在于拇泛,每行用戶信息被劃分為 9 個(gè)字段滨巴。每個(gè)字段的含義如下:
用戶名:加密密碼:最后一次修改時(shí)間:最小修改時(shí)間間隔:密碼有效期:密碼需要變更前的警告天數(shù):密碼過期后的寬限時(shí)間:賬號(hào)失效時(shí)間:保留字段
重點(diǎn):加密密碼字段
這里保存的是真正加密的密碼。目前 Linux 的密碼采用的是 SHA512 散列加密算法俺叭,原來采用的是 MD5 或 DES 加密算法恭取。SHA512 散列加密算法的加密等級更高,也更加安全熄守。
注意蜈垮,這串密碼產(chǎn)生的亂碼不能手工修改,如果手工修改裕照,系統(tǒng)將無法識(shí)別密碼攒发,導(dǎo)致密碼失效。很多軟件透過這個(gè)功能牍氛,在密碼串前加上 "!"晨继、"*" 或 "x" 使密碼暫時(shí)失效。
所有偽用戶的密碼都是 "!!" 或 "*"搬俊,代表沒有密碼是不能登錄的紊扬。當(dāng)然,新創(chuàng)建的用戶如果不設(shè)定密碼唉擂,那么它的密碼項(xiàng)也是 "!!"餐屎,代表這個(gè)用戶沒有密碼,不能登錄玩祟。
Windows hash由二部分組成腹缩,分別是LM HASH&NT HASH。Windows系統(tǒng)關(guān)于hash的組成如下:
用戶名稱:RID: LM-HASH值:NT-HASH值
LM HASH生成規(guī)則:
1.用戶的密碼被限制為最多14個(gè)字符空扎。
2.用戶的密碼轉(zhuǎn)換為大寫藏鹊。
3.系統(tǒng)中用戶的密碼編碼使用了OEM內(nèi)碼頁
4.密碼不足14字節(jié)將會(huì)用0來補(bǔ)全。
5.固定長度的密碼被分成兩個(gè)7byte部分转锈。每部分轉(zhuǎn)換成比特流盘寡,再分組,每7bit為一組并且末尾加0撮慨,組成新的編碼
6.以上步驟得到的8byte二組竿痰,分別作為DES key為“KGS脆粥!@#$%”進(jìn)行加密。
7.將二組DES加密后的編碼拼接影涉,得到最終LM HASH值变隔。
NT hash生成原理
IBM設(shè)計(jì)的LM Hash算法存在幾個(gè)弱點(diǎn),微軟在保持向后兼容性的同時(shí)提出了自己的挑戰(zhàn)響應(yīng)機(jī)制蟹倾,NTLMHash便應(yīng)運(yùn)而生匣缘。假設(shè)明文口令是”123456",首先轉(zhuǎn)換成Unicode字符串喊式,與LMHash算法不同孵户,這次不需要添加0補(bǔ)足14字節(jié)
“123456"->310032003300340035003600
從ASClI串轉(zhuǎn)換成Unicode串時(shí),使用little-endian序岔留,微軟在設(shè)計(jì)整個(gè)SMB協(xié)議時(shí)就沒考慮過big-endian序夏哭,ntoh0、hton0函數(shù)不宜用在SMB報(bào)文解碼中献联。0×80之前的標(biāo)準(zhǔn)ASCII碼轉(zhuǎn)換成Unicode碼竖配,就是簡單地從0x變成0×00。此類標(biāo)準(zhǔn)ASCIl串按little-endian序轉(zhuǎn)換成Unicode串里逆,就是簡單地在原有每個(gè)字節(jié)之后添加0×00进胯。對所獲取的Unicode串進(jìn)行標(biāo)準(zhǔn)MD4單向哈希,無論數(shù)據(jù)源有多少字節(jié)原押,MD4固定產(chǎn)生128-bit的哈希值胁镐,16字節(jié)310032003300340035003600-進(jìn)行標(biāo)準(zhǔn)MD4單向哈希-
32ED87BDB5FDC5E9 CBA88547376818D4,就得到了最后的NTLM Hash
NTLM Hash:32ED87BDB5FDC5E9CBA88547376818D4