Шеллкодес для начинающих.

Тема в разделе "WASM.BEGINNERS", создана пользователем ololoe, 5 ноя 2009.

  1. ololoe

    ololoe New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2009
    Сообщения:
    17
    Приветствую всех.

    Напоролся я случайно на переполнение буфера. Др. ватсон писал вот что:
    Код (Text):
    1. eax=00000000 ebx=008c8848 ecx=0012ed30 edx=2e2e2e2e esi=00560ed4 edi=00000111
    2. eip=2e2e2e2e esp=0012e6c0 ebp=2e2e2e2e iopl=0         nv up ei pl zr na po nc
    3. cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00200246
    (Переполнялся буфер "." с кодом 0x2e). Это же именно оно, раз eip перезаписало? C MSVC в качестве отладчика писало, произошла ошибка по адресу 0x2e2e2e2e блаблабла.

    Если да, то вопрос: как это дело отладить и довести до рабочего шеллкода?

    Успел заметить, что адреса, по которым переполняющая строка лежит, каждый раз имеет новый адрес.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    а подробности будут ? ;)
     
  3. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ololoe
    Легко и просто, блин.
    надо в EIP записать адрес твоей команды(функции или чего ещё) . Сначала посмотри, как именно переполнение происходит..например записывый данные не 0x2e ,а 1 2 3 4 .. 99999
    Потом посмотри на содержание EIP увидишь какие именно данные произовдят переполнение..
    затем в подоваемую строку, вместо этих данных(которые затирают EIP) запишешь нужный адрес...и всё

    Кстати замечу..для полнейших "начинающих"!!! есть такие книги как, ХАКИНГ - искусство эксплойта.
    А для тех кто, чуть выше начинающих..есть книга, "Разработка средств безопасности и эксплойтов"
     
  4. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Как реализовывать эксплойтики в винде, есть хорошее описание(для начинающих) в книге "Защита от взлома: сокеты, эксплойты и shell-код" так какрас показано MSVC
     
  5. ololoe

    ololoe New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2009
    Сообщения:
    17
    Какие именно? Если совсем конкретные - в приват.

    Ну тебе может, блин, легко и просто :)

    Как найти место, в котором происходит переполнение? Ну вылетела программа с эксепшеном, как вернуться взад и посмотреть, в каком участке кода это произошло?

    Нашел trace в OllyDbg, но он работает как-то странно, да и состояние регистров / памяти не сохраняет, что совсем не есть гуд.
     
  6. tex32

    tex32 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2009
    Сообщения:
    202
    Лучше будет, если ты случайно потеряешь это переполнение.
    Чтобы ощутить всю прелесть шелл-кода, скачай готовый и запори себе компьютер, а потом подумай, что ты собрался создать и каково это будет пользователю.

    И вообще не рой яму другому.
     
  7. ololoe

    ololoe New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2009
    Сообщения:
    17
    По себе не судят.

    Модеры, как у вас с сообщениями не по теме?
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    1) Если ты не знаешь где переполнение буфера - ищи его.
    2) Если знаешь, то совет тебе дали : пост #3
     
  9. ololoe

    ololoe New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2009
    Сообщения:
    17
    valterg, я знаю, как его вызвать, но не знаю, где оно. Пост #5.
     
  10. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ololoe
    Olly всё сохраняет..и бектрейс достаточно хорош. Научись пользоваться этим дебагером =) .. на wasm.ru есть статьи , введение в крекинг с нуля. Там, в самом начале, рассказывается об интерфейсе данного отладчика.
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Я бы делал так : esp в сообщении об ошибке разумный. Смотрим что на стеке - там должны быть адреса возвратов, а значит можно найти и call. Далее элементарно. А трейс - это для профи, а не для тех кто книжки норовит с середины читать :)
     
  12. ololoe

    ololoe New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2009
    Сообщения:
    17
    Да я ж абсолютно не против "адекватных" методов, только расскажите, какие они. А то приходится пользоваться первым, что нашел в интерфейсе.

    А насчет адреса возврата я не понял - мы же адрес возврата перезаписываем?
     
  13. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Ты такой термин дерево вызовов (call tree) слышал. Я и не сказал, что тебе сразу на блюдечке будет функция, которая потерла. Кстати про трассу я погорячился - оно тут как раз к месту.
    ==================
    Но судя по твоему вопросу и теме про DEP, ты сам затираешь стек "прямыми" командами. А это не есть "переполнение буфера". Тогда нечего ловить черную кошку в темной комнате :)
    Или дай больше информации.
     
  14. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    ololoe
    Первый совет, прежде чем захламлять форум вопросами с минимальной периодичностью на каждую озникшую проблему, необходимо самостоятельно изучить доступную информацию, прочитать существующую инфу по интересующей теме, и уже потом если всеравно нихрена не получается есть 3 варианта:
    1) Хороше подумать а может нуего.
    2) Попробовать пройтись ещераз и ещераз по информации и попытаться таки разобратся с проблемой (поотлаживать готовые решения шелкоды и.т.д. посмотреть реализацию). Если не получилось опять вернутся к пункту 1 а потом уже перейти к 3ему.
    3) Теперь грамотно сформулировать проблему на форуме а не копипастить вывод ошибки доктора ватсона !!!.

    П.С. Поставь OllyDbg как отладчик по умолчанию и когда выскочит ерор нажми дебаг, и смотри что в регистре что в памяти какие параметры, стек, функция и.т.д.
     
  15. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Еще рекомендую почитать информацию по ассемблеру а именно что такое стек, что такое стековый клстер. что такое локальный буфер (онже стековый) потом про организацию памяти и.т.д. Такие заметки "Успел заметить, что адреса, по которым переполняющая строка лежит, каждый раз имеет новый адрес." не будут вызывать удивление.