Sey*_*mad 7 c exploit shellcode
我正在试验对Linux上用C编写的程序的控制流劫持攻击.我正在尝试对启用了No-eXecutable-stack对策的程序执行简单的ret-2-libc攻击.为此,我将返回system()带参数的函数/bin/sh.
但是我遇到了一个问题:虽然我的攻击有效并且shell成功生成,但是在进入第一个角色后shell立即退出!也就是说,按下任意键后shell关闭!
在这个简单的C代码中也可以观察到这种行为:
int main() { system("/bin/sh"); return 0; }
Run Code Online (Sandbox Code Playgroud)
我用它编译它: gcc code.c -o system
为什么是这样?我该如何解决?
我在尝试Ubuntu-9.04使用kernel 2.6.28和glibc-2.9-1
更新:当且仅当我按下的第一个键时,shell才会变为交互式Enter.也就是说,如果我输入的第一个字符是a new-line(\n),那么shell将保持打开状态并变为交互式.
所以有人能解释这里发生了什么吗?
Mo *_*igi -1
好的,我相信系统已成功调用/bin/sh,但它使用 -c 标志来调用它。
尝试:
/bin/bash -c junk
Run Code Online (Sandbox Code Playgroud)
这应该与您所看到的类似。您需要使用寄存器来设置系统调用,以便在不使用 -c 标志的情况下调用 /bin/sh 。