误区86的shellcode

问题描述:

我想写应该运行下面的C函数的汇编代码:误区86的shellcode

execv("/bin/sh", ["/bin/sh", 0]) 

因此,我写了下面的汇编代码:

start: 
    call main 
    db '/bin/sh',7 
main: 
    xor edx, edx 
    mov eax, 11  
    pop ebx 
    push edx 
    push ebx 
    mov ecx, esp 
    int 0x80 

但不知何故,这不工作所有..究竟是什么错误呢?我想我搞砸了阵列的零队列,但是也不确定。

+0

呀'好是7'绝对不是'0'。你为什么认为这会起作用? – Jester

+0

我没有真正检查数据库的指令..认为我应该把长度放在那里。其他一切都正确吗? – nemo

+0

是的,如果你把'0'放在那里就行了。但是请注意,如果你想在经典的shellcode中使用,你的代码中不允许有零字节。通常的解决方法是在运行时创建零。 – Jester

变化与串线:

db '/bin/sh', 0