2011-04-13 66 views

回答

5

我是這個項目在加州大學聖迭戈分校研究人員之一,並寫了C到利用字符串的編譯器部分。您提到的特定工作是SPARC特定的(並且還針對已知的Solaris libc二進制文件進一步量身定製)。這些文件實際上給我們做了一個更好地瞭解(和概括和編程方法):用於ROP攻擊創造

對於Linux + 64,已經有許多工具因爲我們的研究一般可以通過搜索網絡找到。其中大部分比我們(現在相對較舊)的研究專用工具更有用,更方便用戶。

讓我給您一個建議,如果你想了解你的Linux系統的較低水平,也沒有這樣做的話,可以考慮「階梯形」與以下方法:

  1. 「OLD-學校「堆棧注入:在你的盒子上禁用不可執行的堆棧保護,並注入shell代碼。 Lot是這裏的資源 - 從Aleph One的開創性的「Smashing The Stack For Fun And Profit」開始(在網絡上廣泛使用)。
  2. Return-to-Libc:重新啓用不可執行的堆棧,並嘗試創建自定義有效內容以跳入libc(可能的execve)並嘗試抓取一個shell。

一旦你掌握了這些知識,那麼進入ROP將會容易得多。如果你已經在那裏,那麼給你力量!

+0

瑞恩,我想了解它是如何工作的。我是ROP新手,我開始使用SPARC,因爲我正在開發一個漏洞。我剛剛學會了返回LibC,但調用者函數在將%i0寄存器作爲%i0使用/ bin/sh之前到達system()之前對其進行了保存。我認爲ROP可能能夠救我,我可以在那裏中間調用一個小的後綴函數來恢復我已經溢出的其他寄存器之一的%o0 ..我幾乎開始用更新後的手稿中的圖表來理解它,它展示了%sp如何在ROP中佔據領先地位,但隨後我丟失了它... – bazz 2014-10-16 12:56:16

+0

繼續上面的評論:AFAIK,我正在利用一個遠程程序,我不知道沒有蠻力的堆棧偏移量。當我覆蓋%fp和%i7時,我用一些隨機的合格堆棧地址寫了%fp,我意識到它在ret恢復到感染的%i7後變成%sp。這個%sp然後成爲新堆棧框架中%i7的基礎,對吧?!這就是爲什麼我不明白我如何能夠控制SPARC上的多個級別的回報:| – bazz 2014-10-16 13:02:56

+0

嗨,感謝您的關注!你是否通過了CCS 2008的全部文章? SPARC ROP的難點在於滑動註冊窗口,並準備在返回之後彙總。目前還不清楚你是否有ASLR,如果事情變得更加困難(我們沒有在我們的論文中解決這個問題)。只要ASLR關閉,並且您有一個「常規」strcpy或其他可用的exploit,則基本上需要回溯到函數返回時所有寄存器應該在哪裏,並且該文件應該在那裏提供高級別。 – 2014-11-03 21:47:37