Есть ли разница между переполнением буфера в VirtualBox и реальном железе?

Не запускайте предложенные файлы если вы не понимаете всех последствий своих действий


Вопрос вот в чем. Есть ли разница между переполнением буфера, например, в 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;
}
  • Вопрос задан
  • 304 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы