日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【攻防世界009】流浪者

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【攻防世界009】流浪者 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是看雪CTF 2019的一個題,題目是很標準的一個比賽簽到題,沒有反調試和混淆,只需要耐心分析匯編即可。

拿到手是一個 cm.exe,根據圖標判斷是MFC程序,圖形界面程序分析起來比控制臺要更難,程序運行起來是這樣的:

隨便輸入點什么,程序提示密碼錯誤,然后就會退出:

現在需要找到判斷的邏輯,一個簡單的方法是找字符串交叉引用,shift + f12 可以查看程序的字符串:

其中,請輸入pass 這個字符串是我們不輸入密碼直接點驗證會彈出的提示信息,校驗的邏輯應該就在附近,通過這個方法我們可以找到該程序的校驗函數:

該函數首先獲取文本框中的內容:

得到用戶輸入key的字符數組后,進行了遍歷,對于三種不同的情況,分別做了不同的處理,三種情況分別是數字,小寫字母和大寫字母:

而如果出現這三種情況以外的字符,則直接判斷密碼錯。

上面的代碼是根據三種不同的情況,對一個數組進行填值,根據指令尋址方式 mov [ebp+eax*4+SomeDwordArray] ,可以推斷這是一個DWORD數組,由于不知道是干嘛用的,我將它命名為 SomeDwordArray 。對密鑰遍歷完成后,SomeDwordArray 被填值,然后作為參數傳給了下一個函數 sub_4017F0 :

這里我們大概能夠猜到這個題最終要怎么解,通過對 sub_4017F0 函數進行分析,應該可以反解出 SomeDwordArray 的值,然后通過 SomeDwordArray 反解正確的密鑰。接下來是 sub_4017F0 的分析。

sub_4017F0 是比較簡單的,最終有一個 strcmp 的字符串比較,其中一個是 “KanXueCTF2019JustForhappy” ,另一個就是運行時生成的。這個函數做的事情是遍歷 SomeDwordArray 數組,然后填充 Str1,可以直接看匯編,邏輯比較簡單。最后編寫腳本也不難,這個題的逆算法還是很好寫的XD

KanXue = "KanXueCTF2019JustForhappy" abcdef = "abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ" SomeDwordArray = [] Key = ""for i in range(len(KanXue)):SomeDwordArray.append(abcdef.find(KanXue[i]))print("SomeDwordArray =", SomeDwordArray)for dw in SomeDwordArray:if dw <= 9 and dw >= 0:Key += chr(dw + ord('0'))elif dw + ord('W') >= ord('a') and dw + ord('W') <= ord('z'):Key += chr(dw + ord('W'))else:Key += chr(dw + 0x1D)print(Key)

解出的 key 加上flag{} 就可以了。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【攻防世界009】流浪者的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。