web-dev-qa-db-ja.com

ヒープスプレー形式の背後にある理由

ヒープスプレーが繰り返しNOP + Shellcodeのチャンクの割り当てで構成されている理由について知りたいのですが?フォーマットがNOPを繰り返さず、最後にシェルコードだけが繰り返されるのはなぜですか。スタックピボットが発生すると、EIPは、シェルコードに到達するまでスレッドを下にスライドさせませんか?さらに、ヒープスプレーでは、予測可能なアドレスが常にピボットするように選択されているように見えるため、チャンクの繰り返しは不要のようです。

3
dylan7

スプレーのポイントは、オブジェクトがどのブロックに割り当てられているかを常に正確に把握できるとは限らないということです。ヒープがどれほど不安定になる可能性があるからだと思います。いつでもメモリのブロックが割り当てられ、NOPスレッド/シェルコードが中断される可能性があります。

概念を学びやすくするため、予測可能なアドレスの例が表示されますが、実際には、ASLRはヒープが配置されている場所をランダム化します。したがって、可能な限り堅牢である必要があります。

4
RoraΖ