误区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
但不知何故,这不工作所有..究竟是什么错误呢?我想我搞砸了阵列的零队列,但是也不确定。
答
变化与串线:
db '/bin/sh', 0
呀'好是7'绝对不是'0'。你为什么认为这会起作用? – Jester
我没有真正检查数据库的指令..认为我应该把长度放在那里。其他一切都正确吗? – nemo
是的,如果你把'0'放在那里就行了。但是请注意,如果你想在经典的shellcode中使用,你的代码中不允许有零字节。通常的解决方法是在运行时创建零。 – Jester