1、将下述代码存储为sh.s,其功能为执行/bin/sh
section .text
global _start
_start:
push rax
xor rdx, rdx
xor rsi, rsi
mov rbx,'/bin//sh'
push rbx
push rsp
pop rdi
mov al, 59
syscall
2、用nasm编译执行
nasm -f elf64 -F stabs sh.s -o sh.o
ld sh.o -o sh
备注:-F stabs让assembler给输出文件包含调试信息。因此,gdb之后就能调试了
3、gdb调试sh,下面的演示假设安装了pwndbg。

设置断点


然后,按n执行下一步,i r rdx等来查看寄存器

不断按n,时刻查看寄存器、堆栈和内存,一直执行到程序结束。
网友评论