在本文中,我們將解決該站點的第 25 個任務
組織信息特別是對於那些想要學習新東西並在信息和計算機安全任何領域進行發展的人,我將撰寫並討論以下類別:
- PWN;
- 密碼學(加密);
- 網絡技術(網絡);
- 逆向(逆向工程);
- 隱寫術(Stegano);
- WEB漏洞的搜索和利用。
除此之外,我還將分享我在計算機取證、惡意軟件和固件分析、無線網絡和局域網攻擊、進行滲透測試和編寫漏洞利用方面的經驗。
為了讓您可以了解新的文章、軟件和其他信息,我創建了
所有信息僅用於教育目的。 對於因使用學習本文檔所獲得的知識和方法而對任何人造成的任何損害,本文檔的作者不承擔任何責任。
解決otp任務
我們繼續第二部分。 我馬上就說它比第一個更複雜,但是這次他們不提供程序的源代碼。 不要忘記這裡(https://t.me/RalfHackerPublicChat)和這裡(https://t.me/RalfHackerChannel)的討論。 讓我們開始。
單擊帶有簽名 otp 的圖標。 我們獲得了要連接的地址和端口。
我們連接並在服務器上查看。
一個我們無法讀取的標誌,一個程序及其源代碼。 我們來看看源碼。
我們來整理一下吧。 該程序採用密碼作為參數。
此外,otp 變量中存儲了隨機的 16 個字節。
在 tmp 文件夾中創建一個具有隨機名稱的文件(前 8 個字節是 otp),並向其中寫入隨機 8 個字節(後 8 個字節是 otp)。
由於某種原因,創建的文件的值被讀取並與輸入的密碼進行比較。
這就是漏洞出現的地方。 它包括將生成的數字中間保存到文件中。 我們可以限製文件的大小,比如限制為0,那麼在寫入和讀取的時候,都會將0與密碼進行比較,可以這樣做。
# ulimit -f 0
現在讓我們運行該程序。
我們得到一個錯誤。 沒關係,用同樣的python就可以處理。
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
我們得到了旗幟並輕鬆獲得了 100 分。 我們繼續:在下一篇文章中,我們將涉及網絡。 您可以加入我們:
來源: www.habr.com