here?
?
man
можешь помочь?
дароф
:)
в win32 переполнении
а?
privet, 4em imenno pomo4'?
mogu only dat' sovet :)
слух
буду рад
слух
я вот написал
для примера бажную прогу
ща
покажу
#include
#include
int main(int argc, char *argv[]) {
char buf[20];
strcpy(buf, argv[1]);
}
так вот
я не пойму
в linux все предельно ясно
адрес возврата прально определить не могу
написал сплоит
он не пашит
вот пример сплоита
int main(int argc, char* argv[])
{
char buf[100];
char exec[600];
memset(buf,0x00,sizeof(buf));
memset(buf,0x90,190-strlen(shellcode));
memcpy(buf+strlen(buf), &shellcode, strlen(shellcode));
*(long *)&buf[24] = 0x0012FF8C;
sprintf(exec,"vuln.exe %s",buf);
system(exec);
return 0;
}
тут ?
a ti sam podumai.... char buf[100]; memset(buf,0x90,190-strlen(shellcode));
u tebya u samogo perepolnenie v ploite :)
heh
w8
а как надо?
char buf[200]
пробовал
i vo-vtorih... char buf[20];
покажи
плз.
пример
сплоита
smotri v moem texte
:)
смотрел
не пашит
vse tam pashet
u menya po krainei mere :))
w8
4to ti tam delaesh.. ya hz
у тя winxp?
da
rus?
rus
у меня тоже
пашит только
второй пример
с буфером в 100 байт
но 20 не пашит
20..eto uje tvoi variant
ну да
ti dlya svoego varianta nepravilno ploit delaesh
так вот я и прошу
помощи
poetomu U MENYA VSE WORK...:)
хех
можешь помочь?
a ya tebe govoryu...smotri moi text i pitaisya ponyat'
:)
дык я понял
текст
пишу свой вариант
нихера
может адрес неправильный
хз
перепробовал много
imho ti nihuya ni4ego ne ponyal..sudya po tomu kakoi ploit ti napisal dlya svoego primera :)
))
ya tebe vse hints uje dal..sm. vishe
ща
слух
скажи мне
вот что
допустим в линухе
я заполняю буфер хоть 1000 байтами
а далее указываю
адрес
и все ок.
в винде что-то не так
тут буфер
допустим
буфер у меня
20 байт
я его заполняю
24 байта
4 адрес возврата на шеллкод
так?
нихера
ti hot' sam ponyal 4to skazal? :)
я заполняю буфер хоть 1000 байтами
а далее указываю
^^^ eto v slu4ae, esli u tebya perepolnyaemii buffer 1000b(+-32b v zavisimosti ot compilera)
a v vinde izvini drugoi kompilyator :)
да я понял
в linux все просто
там даже понимать нечего
esli vse prosto, to po4emu tut problemi? :)))
в win
траблы
не могу понять
там даже понимать нечего - silno skazano :))
допустим в linux такой сплоит написать
просто
vot iz-za togo, 4to ti tam nifiga ne ponimaesh, to i tut ne poimesh :)
я просто прошу помочь тебя
я в linux понимаю переполнение
a ya prosto govoryu tebe..napryagi mozg :) u menya sha time netu ob'yasnyat'
4itai i ponimai
use debuggers to understand howto
просто скажи
a ya prosto govoryu tebe..napryagi mozg :) u menya sha time netu ob'yasnyat'
в 24 байта нужно заполнять
адрес
:)
*(long *)&buf[24] = 0x77F5801c;
так?
a ti sam podumai :))
я думаю да
т.к. 4 байта отводятся под адрес
или же в 28 байт
ща попробую
dumai..probui...
:)
пробую Ж0
я смотрю в 28
байта
;)
запихать
vse zavisit ot kompilyatora... ya uzal ms visual c++ 6.0 compiler
теперь нихера не исполняется :)
ща
memset(buf,0x00,sizeof(buf));
memset(buf,0x90,190-sizeof(shellcode));
memcpy(buf+strlen(buf), &shellcode, strlen(shellcode));
*(long *)&buf[28] = 0x0012FF8C;
что-то я непрально делаю
видимо размер заполняемый непрально указал :(
a ti progressiruesh :))
хех
:)
ne obolshaisya... ti prosto nihuya ne vrubaeshsya 4to delaesh i vse :)
всмысле?
*(long *)&buf[28] = 0x0012FF8C; --- 0x00 (hint #N)
дык это понятно
здесь нули
hahahaha
мля
они не исполнятся
i 4to tebe ponyatno-to? :))
pizdec :)))
хех
*(long *)&buf[28] = 0x77F5801c;
hint #N+1 : sprintf(exec,"vuln.exe %s",buf);
strcpy(buf, argv[1]);
что?
sam dumai
то что нули?
*(long *)&buf[28] = 0x77F5801c;
нули мешают копированию
hint #N+2: *(long *)&buf[28] = 0x77F5801c; --- a u sure about this addr ? :)
просто
я юзал
его для 100 байт в буфере
он пахал
это jmp esp в ntdll.dll
ti ego prosto vzyal s moego primera :)
dlya raznih sp address mojet bit' diffrent
no raz pahal..zna4it tebe povezlo
:)
ladno..dai mne poest' spokoino :) .. sam dumai..