我正在学习计算机安全的基础知识,我试图执行一些我编写的shellcode。我跟着Linux的安全措施反对执行shellcode
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
$
因为我得到了我的暂停计划的工作这里给出的步骤,我刚才复制的objdump的输出到C文件。
test.c的:
int main()
{
char s[] = "\x31\xc0\xb0\x1d\xcd\x80";
(*(void(*)())s)();
}
但是,这会产生一个段错误。现在,这只能归功于Arch Linux(?)的安全措施。那么我怎么才能使这个工作?
可能的页面's'住在没有被映射与执行权限?既然你是x86_64,你肯定有NX硬件支持。 – Flexo
通过“安全”链接替换为Google文档的链接。你能证实它是同一份文件吗?其他链接冻结使用Adobe Reader的PC 9.1.0 – sehe
@awoodland正确的你!我当然不知道有关NX位的信息。对于任何想要映射exec权限的人(使用mmap),说明如下:http://thexploit.com/tag/shellcode/ – Ram