問題タブ [nop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
buffer-overflow - NOP スレッドを使用して ASLR をバイパスする方法
NOPスレッドでASLRをバイパスしようとしています。vuln() のアセンブリは次のとおりです。申し訳ありませんが、ソース コードはありません。
バイナリは 32 ビットで、スタックは実行可能であるため、NOP スレッドを使用することにしました。私のペイロードは次のとおりです。
私の理解が正しければ、エクスプロイトを何度も実行すると、リターン アドレスが NOP スレッドのどこかを指している可能性があり、プロセッサがシェルコードを実行する可能性があります。
ただし、返信先住所を概算する方法がわかりません。バイナリで gdb を試してみると、元の戻りアドレスが 0xfc3fc758 であることがわかるので、その値を使用します。ペイロードをバイナリにフィードすると、SIGSEGV で終了します。
いくつかのデバッグの後、vuln() が戻ったときに segfault がスローされることがわかったので、何が起こるかを確認するためだけにジャンク バイトをフィードしてみました。パディングが 152 バイトを超えるとセグメンテーション違反が発生することが判明しましたが、その理由はわかりません。アセンブリはバッファーが ebp-0x9c で始まることを示しているため、160 バイトは正しいに違いないと思います。
では、NOP スレッドを正しく使用していますか? また、返信先住所を概算するにはどうすればよいですか?