Сейчас на форуме: Rio, johnniewalker, vsv1 (+6 невидимых) |
eXeL@B —› Крэки, обсуждения —› использование переполнения буфера в самописной программе |
Посл.ответ | Сообщение |
|
Создано: 12 мая 2011 15:10 · Личное сообщение · #1 Подскажите где же я ошибся?? Итак [url=самописный сервер]-->http://zalil.ru/31023580<--[/url] который призван слушать порт 1180 и больше ничего. он написан с ошибкой переполнения буфера. при передаче на сервер строки символов длинной в 1000 байт сервер вылетает с ошибкой "0х41414141" - значит что моя строка переписала адрес возврата и при вылете сервер хотел вернуться по адресу выше но у него не получилось. под отладчиком действительно видно что адрес возврата переписан символами "А". что бы определить сколько байт нужно передать точно что бы дойти до адреса возврата сгенерировал последовательную строку тоже из 1000 байт и на этот раз ошибка была другого рода и дала возможность определить что до адреса возврата нужно записать 924 байта (на моей оси Win xp sp3 chip) проверка (отправив 924 х41 и 4 х42) подтвердила вычисления. теперь можно сменить адрес возврата направив в любое другое место на какую нить свою функцию. свой код сунул в регистр ESP, поскольку программа не имеет своих длл"лок она по любому использует стандартные. нашел адрес регистра в длл"ке ws2_32.dll" у меня их там оказалось два но это не проблемно. и последний этап все должно сработать так 924 байта разного мусора, адрес возврата в моем случае адрес регистра ESP =0x71A92B53, дальше несколько десятков нопов - х90 и наконец мой код (в качестве теста использовал шелл-код - windows/shell_bind_tcp) и все. в результате сервер вылетает но больше ничего не происходит. ав и файерволл отключил, отключил функцию DEP. пробовал несколько адресов из длл, пробовал сменить шелл-код не срабатывает. кто может помочь определить где я накосячил? |
|
Создано: 13 мая 2011 13:41 · Личное сообщение · #2 |
|
Создано: 13 мая 2011 14:46 · Личное сообщение · #3 Oro4imaru как-то писал "эксплоит на коленке" статью =) поищи, мб поможет. все аналогично - там я описал, как правильно шелл-код писать и что вообще делать. Дома гляну Oro4imaru пишет: свой код сунул в регистр ESP в стек? ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 13 мая 2011 20:02 · Личное сообщение · #4 и последний этап все должно сработать так 924 байта разного мусора сгенерировал последовательную строку тоже из 1000 байт и на этот раз ошибка была другого рода Подскажите где же я ошибся?? Прочти про слойт и shell_bind_tcp Там явно требуется чтобы вылет был стабилен при длине >1000 - для буфера содержащего шелл-код, а не для 1000 байт Ты оптимист... Если бы так все было просто - все серверы бы уже лежали. Уязвимостей тьма, а вот найти сплойт - надо понимать что делаешь, а не КЛАСТЬ в ESP коды... Также важно как ты попадаешь на АДРЕС. В статье на хакере простой RET. А у тебя. И на чем идет переполнение. Что можно класть в буфер не нарушая уязвимость... |
|
Создано: 14 мая 2011 06:31 · Личное сообщение · #5 |
|
Создано: 16 мая 2011 17:28 · Личное сообщение · #6 |
eXeL@B —› Крэки, обсуждения —› использование переполнения буфера в самописной программе |