Не запускайте предложенные файлы если вы не понимаете всех последствий своих действий
Вопрос вот в чем. Есть ли разница между переполнением буфера, например, в VirtualBox и реальном железе?
Что бы не лить воду тест.
1) Есть старый эксплоит для winrar 3.60
securityvulns.ru/Gnews880.html
Там есть poc.rar код.
2) Cтарый winrar 3.60
expirebox.com/download/7323278aeb93af568dbe2e05a87...
Стразу прверяем в virustotal :)
3) Нужна windows 7/8/10 x86 на реальном железе. VirtualBox - у самого есть.
Собственно, открыв старым раром этот poc.rar загружается ли у вас консольная программа? Или вываливается WerFault.
UPD
Хост Windows XP3 32bit DEP
Гостевая Windows 7_1 32bit DEP
VirtualBox 5.0
Листинг test.exe ниже. Строка secret будет только при переполнении буфера.
_____________________DEP on_________________DEP off__
Хост(poc.rar)............не работает...................работает
Хост(test.exe)..........не работает...................работает
гостевая(poc.rar)........не работает...............
не работает???
гостевая(test.exe)........
работает???............работает
Установка/удаление Guest Additions не влияет.
----------------------------------------------------------------------------------
#include "stdio.h"
#include "string.h"
#pragma comment(linker, "/BASE:0x10400000")
char *esp="\xff\xd4";
int foo(char *in)
{
char temp[100];
memcpy(temp,in,strlen(in));
return 0;
}
int n()
{
printf("\n");
printf("secret");
return 0;
}
int main()
{
char temp[1024];
long p=(long)esp;
long f=(long)n;
memset(temp,0x90,sizeof(temp));
memcpy(temp+104,&p,sizeof(p));
memcpy(temp+104+sizeof(p),"\xb8",1);
memcpy(temp+104+sizeof(p)+1,&f,sizeof(f));
memcpy(temp+104+sizeof(p)+1+sizeof(f),"\xff\xd0",2);
printf("call esp: %p",p);
foo(temp);
return 0;
}