通常、私たちは皆、次のような基本的なバッファオーバーフロー形式を目にします:-
NOPs + shellcode + return_address
NOPs + return_address + shellcode?
リターンアドレスがシェルコードの先頭を指すようにする場合、なぜ使用し
ないのですか?
これは、脆弱性がmain()にある場合、スタックセグメントの外部にデータを書き込もうとしている可能性があるためだと推測しています。私は正しいですか?私がそうなら、それが唯一の理由ですか?
そうそう、return-to-libcやptraceなどを使用する他の種類の攻撃については言及していません。最も基本的なバッファオーバーフロー攻撃が最初の方法で示され、2番目の方法では示されない理由を知りたいだけです。