2 r00t: Отличие мультибайтовой строки и unicode. Спасибо, этого я не знал....
Вообщем мои выводы:
переполнение происходит где-то между 4000 и 5000 байтами в unicode строке (еще точно не выяснял) .... наверно 2044*2 и есть..
Насчет таргетов я понимаю и я использую правильный. Но причина не в этом. И не в 89, 80 ... Причина в multibyte, которую SP1 принимает как-то по дебильному, заменяя некоторые символы на x00 ! Поэтому если взять тот же с этой темы и попробовать против SP1 с правильным джампом то будет dos с offset 0000000 ----> Потому что sp1 разбрасывает свои 0x00 по buff (exp_buf), причем в основном в конец, где и находится REt адресс ----> ret становиться кривым (уж точно не jpmesp (( .....) отсюда и offset.
Если даже взять и заполнить буффер не jmp+shellcode а просто символом (0x38 < x80) и послать то резуьтат будет такой же = offset 00000 ... хотя должно быть 38383838... То есть причина не в 89 80 81 а в multibyte. Хочу попробовать другие функции ANSI -> UNICODE.... swnpritom или как было в пред. exploite:
memset(unicode, 0x00, sizeof(unicode));
for (x = 0, i = 0; i <= sizeof(unicode); x++, i+=2) unicode [I] = exp_buf[x];
хотя автор называл это crapom )...
Вообщем мои выводы:
переполнение происходит где-то между 4000 и 5000 байтами в unicode строке (еще точно не выяснял) .... наверно 2044*2 и есть..
Насчет таргетов я понимаю и я использую правильный. Но причина не в этом. И не в 89, 80 ... Причина в multibyte, которую SP1 принимает как-то по дебильному, заменяя некоторые символы на x00 ! Поэтому если взять тот же с этой темы и попробовать против SP1 с правильным джампом то будет dos с offset 0000000 ----> Потому что sp1 разбрасывает свои 0x00 по buff (exp_buf), причем в основном в конец, где и находится REt адресс ----> ret становиться кривым (уж точно не jpmesp (( .....) отсюда и offset.
Если даже взять и заполнить буффер не jmp+shellcode а просто символом (0x38 < x80) и послать то резуьтат будет такой же = offset 00000 ... хотя должно быть 38383838... То есть причина не в 89 80 81 а в multibyte. Хочу попробовать другие функции ANSI -> UNICODE.... swnpritom или как было в пред. exploite:
memset(unicode, 0x00, sizeof(unicode));
for (x = 0, i = 0; i <= sizeof(unicode); x++, i+=2) unicode [I] = exp_buf[x];
хотя автор называл это crapom )...