2011-07-02 11 views
1

をlibcに復帰して登録します。私はASLRのlibcメソッドへのリターンを使用しようとしていましたが、ジャンプ・ツー・レジスターのテクニックがライブラリーにジャンプすることができるかどうかは疑問でした。たとえば、ライブラリの場所がEAXに保存されている場合、「EAXにジャンプ」というオペコードに戻りアドレスを指定することはできますか?または、ASLRとNXの両方を同時にバイパスする方法がありますか?ありがとうジャンプこれは脆弱なスクリプトです

+0

ASLRとNXの全体のポイントは、このようなことを防ぐことです。あなたはそれらを迂回する些細な方法があると思いますか? –

+0

上記のコードでは、EAXに価値をもたらす方法はありますか?私はそれを見ません... –

答えて

0

"return to libc"(またはライブラリやプログラムコード)がNXを回避するために使用されていると思いました。だから私はあなたがそれを後方に持っていると信じています。

ASLRを使用して、 "return to libc"攻撃を行うのはずっと難しくなります。 ASLRを回避するには、printf形式の文字列脆弱性などのライブラリの場所をスカウトする方法や、正しいランダムな場所に達するまで何回も悪用する必要があります。

+0

実際には、現在のASLRの実装(悲しいことに、まだかなり弱いです)では、それは本当は真実ではありません。少なくともVistaの下では(そしてWIn7の下でも同様に)、ヒープの始まりはランダム化されているので、十分に大きなメモリを割り当てることができれば、保護は簡単に回避できます。 – Voo

+0

@Voo:大きなヒープ割り当てが行われた後、ライブラリがオンデマンドでロードされる場合にのみ適用されますか?すべてのライブラリが前面に読み込まれている場合、それらはすべてランダム化されています。 –

+0

問題は、ヒープの先頭部分だけが無作為化されていることです(2mbの最大オフセットはafaikの下にあります)。つまり、2MB以上を割り当てることができれば、いくつかのデータは予測可能なオフセットになります繰り返しデータパターン) – Voo

0

オペコード呼び出しがあります(関数ポインタは結局そのように実装されています)が、それはあまり役に立たないでしょう(そして、最初にeaxにアドレスを与える方法は私の謎です。あなたがまだ実行可能なスタックを必要としている(さもなければオペコードを保存してもそれほどうまくいきません)。そのアドレスを知っているので、ジャンプすることができます。これらの保護を回避する方法はありますが、それは簡単ではありません - あなたはちょっとグーグルで話題に関する十分な論文を見つけることができますが、ASLRとNXを回避するための搾取があれば、あなたが既にシステムを制御しているので、libc攻撃はもうありません。

関連する問題