【问题标题】:execve shellcode linux segmentation faultexecve shellcode linux分段错误
【发布时间】:2014-03-17 23:41:33
【问题描述】:

我试图运行这个 shellcode,但它抛出了:“Segmentation fault”错误 shellcode如下:

shellcode.asm:

global _start
_start:

jmp short ca
doit:
pop ebx
xor eax, eax
cdq
mov byte [ebx+7], al
mov long [ebx+8], ebx
mov long [ebx+12], eax
lea ecx, [ebx+8]
mov byte al, 0x0b

int 0x80
ca:
call doit
db '/bin/sh'

我用 'nasm -f elf shellcode.asm' 编译它 并将其链接到:' ld -m elf_i386 -s -o shellcode shellcode.o

我认为错误是当我使用 mov [ebx+x], al/eax/ebx 因为当我从代码中删除它时,不会出现错误

谢谢

【问题讨论】:

    标签: linux assembly nasm


    【解决方案1】:

    您的问题是 .text 部分默认情况下不可写。最简单的做法是将您的代码放入标记为可写的新自定义部分中。在 asm 文件的顶部添加这一行:

    section .shellcode  progbits alloc exec write align=16
    

    您也可以将-N 开关传递给链接器。

    或者,您可以重写 shellcode 以便它使用堆栈来创建参数。

    【讨论】:

    • 谢谢,它有效。是的,如果我使用堆栈,它可以正常工作,但我想知道为什么我不能使用 mov [], x 指令。
    • 我一直在寻找这个答案几个小时。谢谢!
    • 谢谢。 exec 部分不起作用,但 -N 起作用了。干杯
    猜你喜欢
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多