私はコンピュータセキュリティの基礎を学んでおり、私が書いたシェルコードを実行しようとしています。私は私の一時停止プログラムが動作するようになったので、ここでシェルコード実行に対するLinuxのセキュリティ対策
http://dl.packetstormsecurity.net/papers/shellcode/own-shellcode.pdf
http://webcache.googleusercontent.com/search?q=cache:O3uJcNhsksAJ:dl.packetstormsecurity.net/papers/shellcode/own-shellcode.pdf+own+shellcode&cd=1&hl=nl&ct=clnk&gl=nl
$ cat pause.s
xor %eax,%eax
mov $29,%al
int $0x80
$ as -o pause.o pause.s
$ ld -o pause pause.o
ld: warning: cannot find entry symbol _start; defaulting to <<some address here>>
$ ./pause
^C
$ objdump -d ./pause
pause: file format elf64-x86_64
Disassembly of section .text:
08048054 <.text>:
8048054: 31 c0 xor %eax,%eax
8048056: b0 1d mov $0x1d,%al
8048058: cd 80 int $0x8
$
を与えられた手順に従って、私はCファイルにobjdumpの出力をコピーしました。
test.cの:
int main()
{
char s[] = "\x31\xc0\xb0\x1d\xcd\x80";
(*(void(*)())s)();
}
しかし、これはセグメンテーションフォルトを生成します。さて、これはArch Linux(?)のセキュリティ対策が原因である可能性があります。では、どうやってこれを動作させることができますか?
おそらくページ 's'は実行権限とマッピングされていませんか?あなたはx86_64なので、ハードウェアにはNXのサポートがあります。 – Flexo
Googleドキュメントへのリンクが「安全」なリンクに置き換えられました。同じ文書であることを確認できますか?他のリンクは、Adobe Reader 9.1.0 – sehe
@awoodlandを使ってPCを凍らせました。私は確かにNXのビットについて何も知らなかった。 exec権限(mmapを使用して)をマップする人は、http://thexploit.com/tag/shellcode/ – Ram