1

これは脆弱なスクリプトです:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char buffer[30];
strcpy(buffer, argv[1]);
return 0;
}

ASLRとNXの両方をオンにしてこのスクリプトを利用しようとしています。ASLRのreturntolibcメソッドを使用するつもりでしたが、登録へのジャンプ手法でライブラリにジャンプできるかどうか疑問に思いました。たとえば、ライブラリの場所がEAXに保存されている場合、「EAXにジャンプ」のオペコードを指す差出人住所を指定できますか?または、ASLRとNXの両方を同時にバイパスする他の方法はありますか?ありがとう

4

2 に答える 2

0

「libc に戻る」(または任意のライブラリまたはプログラム コード) は、NX を回避するために使用されると考えていました。だから私はあなたがそれを逆に持っていると信じています。

ASLR は、"return to libc" 攻撃を実行するのをはるかに困難にするために使用されます。ASLR を回避するには、printf フォーマット文字列の脆弱性などを通じてライブラリの場所を調べる方法を用意するか、正しいランダムな場所に到達するまでエクスプロイトを何百回も実行する必要があります。

于 2011-07-02T20:40:19.683 に答える
0

まあ、オペコード呼び出しがあります(結局、関数ポインターはそのように実装されます)が、それはあまり役に立ちません(そして、最初にアドレスをeaxに取得する方法は私にはなぞなぞです-それは非常にありそうにないと思います)

結局のところ、スタックを実行可能にする必要があり (そうしないと、そこにオペコードを保存してもあまり効果がありません)、そのアドレスを知っているので、そこにジャンプできます。これらの保護を回避する方法はありますが、それほど簡単ではありません-少しグーグルでそのトピックに関する十分な論文を見つけることができると確信しています-しかし、ASLRとNXを回避するためのエクスプロイトがある場合は、への復帰は必要ありませんすでにシステムを制御しているため、libc の攻撃はもはや行われません。

于 2011-07-02T20:40:57.870 に答える