WEB:
0x00 easyweb
admin用戶是沒有密碼的,但是當密碼為空時,網頁會自動填寫。用hackbar構造空密碼post,服務器返回cookies,瀏覽器保存,刷新獲得flag
CRYPTO:
0x01 flag_in_your_hand
輸入token調用js加密,比較。正確返回flag。加密方式是md5,返回的flag是一串base64。
Js中check方法,暴露了數組,python還原。輸入
0x02 oldstreamgame
流密碼,32位mask,8位16進制flag。2^32爆破不可取。讀腳本。
1.主函數第一個循環即寫入100字節,第二個循環通過將tmp循環左移+output(^output)變為8位,寫入文件。
2.Lfsr函數輸入(R,mask),輸出(output,lastbit)。R初始為flag,長32位,每經過一次函數,R=output=(R*2)%2**32+lastbit即循環左移末尾補上lastbit。mask長32位不變。lastbit長度1位,有點類似於差分曼徹斯特編碼,i=R&mask,當i的末位為1時會發生跳變,為0時保持原數。在這個發過程中發現,當i的1為奇數時為lastbit為1,為偶數時為0。
總結出這些規律后,不難發現key只有前32字節是直接與flag有關。后面的字節是后來補上的lastbit加密而成。所以利用這一特點,循環右移,計算奇偶,算出flag。
貼出解密腳本和驗證
Misc:
0x03 picture
Binwalk -eM 掃出一段數據,打開里面是base64,python解碼保存為一個文件
Winhex查看16進制,發現有點像zip壓縮包,但頭部為4B50,所以修改頭部和后綴打開。
根據注釋獲得密碼 integer division or modulo by zero
打開code,發現為uuencode,解碼
0x04 驗證碼
輸入32位token與驗證碼獲得flag