我不小心在该.data部分中编写了我的汇编代码。我编译并执行了它。该程序在Linux下正常运行5.4.0-53-generic,即使我没有指定就像一面旗帜execstack。
之后,我在 Linux 下执行了该程序5.9.0-050900rc5-generic。该程序得到了SIGSEGV。我通过阅读检查了虚拟内存权限/proc/$pid/maps。事实证明,该部分不可执行。
我认为 Linux 上有一个配置可以管理该权限。但我不知道在哪里可以找到。
ammarfaizi2@integral:/tmp$ uname -r
5.4.0-53-generic
ammarfaizi2@integral:/tmp$ cat test.asm
[section .data]
global _start
_start:
mov eax, 60
xor edi, edi
syscall
ammarfaizi2@integral:/tmp$ nasm --version
NASM version 2.14.02
ammarfaizi2@integral:/tmp$ nasm -felf64 test.asm -o test.o
ammarfaizi2@integral:/tmp$ ld test.o -o test
ammarfaizi2@integral:/tmp$ ./test
ammarfaizi2@integral:/tmp$ echo $?
0
ammarfaizi2@integral:/tmp$ md5sum test
7ffff5fd44e6ff0a278e881732fba525 test
ammarfaizi2@integral:/tmp$
Run Code Online (Sandbox Code Playgroud)
## Debug
gef? shell …Run Code Online (Sandbox Code Playgroud)