############################################################################### # © Gustavo Romero López 2019 - GPLv3 - gustavo@ugr.es # int execve(const char *filename, const char *argv[], const char *envp[]); # al rdi rsi rdx # 0x3b /bin/sh null null # gcc -m64 -nostartfiles 22c.s -o 22c ############################################################################### .text _start: .globl _start movabs $0x3b68732f6e69622f,%rax # "/bin/sh\x3b" push %rax # "/bin/sh" in stack push %rsp # string address in stack pop %rdi # rdi = "/bin/sh" xor %esi,%esi # rsi = null mul %esi # rdx = null xchg %al,0x7(%rdi) # sys_execve syscall # sys_execve("/bin/sh", null, null)