私はスタックバッファオーバーフローの悪用を学んでおり、後で質問を投稿しました シェルコードセグメンテーション違反 テストプログラムからシェルコードを実行するか、脆弱なプログラムに注入されると、セグメンテーション違反が発生します。今、私はそれがNXによって引き起こされているかもしれないことを知りました。 dmesgでこれを検索すると、次の行が見つかりました。
[ 0.000000] NX (Execute Disable) protection: active
だから私の質問は、LinuxでNXビットを無効にする方法です。 4.18.0カーネルでKaliLinux64ビットを使用しています。
カーネルコマンドライン でnoexec=off
を指定して起動することにより、LinuxでNXをグローバルに無効にできます。
noexec [X86]
On X86-32 available only on PAE configured kernels.
noexec=on: enable non-executable mappings (default)
noexec=off: disable non-executable mappings
noexec32 [X86-64]
This affects only 32-bit executables.
noexec32=on: enable non-executable mappings (default)
read doesn't imply executable mappings
noexec32=off: disable non-executable mappings
read implies executable mappings