Несколько советов по сборке и разработке эксплойтов в 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, чтобы правильно выровнять стек.