2009-07-02 116 views
3

我想學習在Ubuntu中使用緩衝區溢出攻擊。不幸的是,我無法關閉該操作系統中的默認開啓的地址空間佈局隨機化(ASLR)功能。我曾嘗試在一些Fedora的書籍周圍發現了一些工作:在Ubuntu中練習緩衝區溢出攻擊

echo "0" > /proc/sys/kernel/randomize_va_space 

,但由於某些原因,保護仍然存在。請給我一些建議。謝謝。

實際上上面的命令沒有成功,它說「權限被拒絕」,即使使用sudo。我該如何解決這個問題?

[添加]當它顯示堆棧中的地址時,我不斷收到segmetation錯誤錯誤。一旦你做到了這是否與非可執行堆棧在Ubuntu :(?

+1

您需要使用execstack(apt-get install execstack)以每個應用程序爲基礎禁用NX。 – Rushyo 2012-09-04 12:26:22

+0

相關:http://stackoverflow.com/questions/5194666/disable-randomization-of-memory-addresses – 0fnt 2013-02-14 07:09:17

回答

7

您將需要根燙髮嘗試之前,如果我沒有記錯,重新啓動。

sudo -i 
echo "0" > /proc/sys/kernel/randomize_va_space 
+0

我已經嘗試過,因爲你說過,但在重新啓動Ubuntu後,我查看該文件,該文件中的以前的值是不變的:|。謝謝。 – wakandan 2009-07-02 08:56:05

+3

當然,重啓後它會改回來;/proc是一個易失性目錄。嘗試用randomize_va_space關閉重新編譯內核:) – MoshiBin 2009-07-02 18:07:11

1

GCC與-fno-stack-protector

1

編譯呼應與使用sudo根存取權限,你可以使用下面的代碼文件:

echo "0" | sudo tee /proc/sys/kernel/randomize_va_space 
2

發現自己

你必須編譯這樣:

GCC -fno-堆棧保護-z execstack -o輸出Input.c中

1

您可以通過使用setarch啓動關閉ASLR特定進程

對於32位程序:

setarch i386 -R yourProgram 

對於64位程序:

setarch x86_64 -R yourProgram