Несколько советов по сборке и разработке эксплойтов в Windows x86.

ВВЕДЕНИЕ

Статья создана для всех тех, кто просил у меня какие-то мои заметки. Я перефразировал их и вырезал большую часть, чтобы избежать плагиата материалов курса EXP-301. Есть несколько советов по сборке x86 и разработке эксплойтов в Windows. Я надеюсь, что он окажется полезным для тех, кто интересуется сертификацией OSED или просто знакомится с этой темой.

СОВЕТЫ И РЕКОМЕНДАЦИИ — ПРИМЕЧАНИЯ

Ниже вы можете найти мои заметки в виде СОВЕТОВ И ТРЮКОВ. Наслаждаться!

ПОВОРОТ СТЕКА С SUB|ADD ESP

Используйте sub esp,127; jmp esp;, чтобы вернуться к началу вашего буфера.

  • 127 (0x7F) — максимальное число без байтов 0x00.
  • Вы можете использовать его несколько раз, чтобы прыгнуть более чем на 127В назад.

ИЗБЕГАЙТЕ НУЛЕВЫХ БАЙТОВ С МЕНЬШИМИ ЯЩИКАМИ

Используйте 16-битные или 8-битные регистры вместо 32-битных.

  • Вместо того, чтобы использовать sub esp,127 несколько раз, вы можете использовать регистр 16b:

ИЗБЕГАЙТЕ НУЛЕВЫХ БАЙТОВ С БОЛЬШИМ ЧИСЛОМ

Используйте ADD вместо SUB.

  • Например, sub esp, 0x300 содержит байты NULL:
  • Вы можете использовать 0x301 вместо 0x300 и add вместо sub для достижения того же значения -769:

  • Таким образом, окончательный шеллкод не будет содержать байтов NULL, но даст тот же результат:

Точка останова на JMP

Проверьте, что произошло на JMP ESP.

bp JMP_ADRRESS

Иногда при повороте могут происходить странные вещи, например, вам нужно добавить несколько NOP, чтобы правильно выровнять стек.

ВЫРАВНИВАЙТЕ СТЕКУ