i春秋2020新春戰疫賽-re-喫雞神器
新手一枚,如有錯誤(不足)請指正,謝謝!!
個人博客:點擊進入
題目描述:
盧姥爺收到了朋友發來的“喫雞神器”,但是朋友忘了告訴他登錄賬戶和密碼,⽽且盧姥爺也不好意思去問。所以 請爲盧姥爺以 “lubenwei” 爲⽤戶名註冊個賬戶。flag格式爲 “flag{對應密碼}”
題目下載:
鏈接: https://pan.baidu.com/s/1gVE158CY6VmSV4qUwtXXqA 提取碼: 2020
OD載入,字符串搜索
找到關鍵字符串,雙擊進入
F2下斷點,運行程序,
輸入用戶名和假碼,進行login
程序被斷下來。
ctrl+F9執行到返回,返回上層函數
發現所在模塊變成了一個dll,繼續ctrl+F9執行到返回。發現來到了Login主模塊
發現沒有跳過去的跳轉啥的。retn返回上層call
來到這裏
這個程序IDA的基址和OD的基址一樣,都是0x400000,用IDA配合查看
用IDA找到彈窗call地址0x00402ade
快捷鍵G打開跳轉地址窗口
F5查看僞代碼
發現判斷是否進行錯誤彈窗代碼的條件是402090函數參與的,雙擊進入查看僞代碼
加上OD調試可知此處將輸入的用戶名的每個字符取出,在35~41行的循環裏,對result進行變換最終返回result
因爲用戶名題目已經給出,所以返回的result爲一個定值0x41d26f00
返回OD,也就是eax的值爲0x41d26f00
,而eax與edi進行比較,來控制下面的跳轉,edi是在0x4021d1地址處被eax賦值的。
而eax是0x4021c9地址處調用的0x401fb0
call的返回值。
IDA查看401fb0()函數
使用OD調試可知這部分是對輸入的密碼進行處理。輸入只能是0~9,a~f。
(其實就是將輸入的十六進制字符串轉換爲十六進制數值然後返回
若想成功,也就是對密碼處理後的返回值是0x41d26f00
,也就是密碼是字符串"41d26f00"
根據題幹輸入密碼即爲flag
最終flag爲flag{41d26f00}