2011-12-03 11 views
2

私はバッファフローエクスプロイトのデモをしようとしています。シェルコードを使用してスタックをオーバーフローさせ、shセッションを取得したい。私はここでhttp://www.shell-storm.org/papers/files/432.pdfからチュートリアルに従うことができ、まったく同じシェルコードを生成することさえできます。しかし、チュートリアルのようにshellcode3.cを使ってシェルコードを実行させることはできません。私が得たのは、常に「セグメンテーションフォールト」です。なぜシェルコードが機能しないのですか?

「Red Hat Enterprise Linux ASリリース4(Nahant Update 4)」を使用しています。

似たような方法で作業する人は誰もいますか?他のシステムに変更する必要がありますか?

+0

この論文は1999年のように書かれたのはいつですか?まあ、2011年にようこそ、このくその作品はもういない。 – rook

+3

バッファオーバーフローの悪用がまだ機能していれば、aslrを回避して今日のシステムでdepする必要があります。 exploit-db.comには、今日のシステムでこれらの種類の悪用があります – quantumdisaster

答えて

1

セグメンテーションフォールトは、スタックをオーバーフローさせてクラッシュを引き起こしたことを意味します。 EIPの正しいオフセットを見つけてそこにシェルコードを配置する必要があります。シェルコードを適切な場所に置いていると確信している場合は、常にMetasploitを使用して、必要に応じてシェルコードを生成することができます。現代のLinuxバージョンでは、デフォルトでオンになっているさまざまなスタックオーバーフロー保護機能を無効にする必要があります。あなたが知る必要があることをGoogleからお知らせします。 http://www.corelan.beをチェックしましたか?これはWindowsの開発開発のためのものですが、始めるには良い場所です。

0

セグメンテーションフォルトが発生したためにスタックを上書きしたようです。 gdbのようなデバッガを使って、EIPレジスタの正確な内容とシェルコードのアドレスを調べてください。彼らは一致する必要があります。ジャンプがどこで行われているのか、どこにあるべきかを理解してください。これはあなたに良いアイデアを与えるだろう。

1

使用するLinuxは重要な要素です。スタックの全体の構造は、異なるOSによって異なります。 良いシェルコードには、バッファ内のコードの実行を停止するNullバイトを含めてはいけません。

「\ XEB \ X1F \ x5e \ x89 \ X76 \ X08 \ X31 \ XC0 \ X88 \ X46 \ X07 \ x89 \ X46 \ x0c \ XB0 \ X0B \ x89 \ XF3 \ x8d \ x4e \ X08 \上記x8d \ X56 \ x0c \ XCD \ X80 \ X31 \ XDB \ x89 \ xd8 \ X40 \ XCD \ X80 \ xe8 \ XDC \ XFF \ XFF \ XFF/binに/ shの」

は良いシェルコードで、ちょうど46バイト。 このサイトはRed Hatのスタックに関する構造やその他の情報を調べるのに役立ちます また、execstack、stack canariesなどのスタック保護をすべて無効にする必要があります。 'gcc -fno-stack-protector -o out test .c '

関連する問題