• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как сделать так, чтобы байты x00 не "перетерались" другими?

Mogen

Red Team
27.08.2019
315
613
BIT
14
Привет, всем✋

Хочу задать вопрос.
Практикуюсь в атаке возврата в библиотеку. ASLR отключен. Вот такая ситуация:
Адрес system - 0xb7e18c00
Адрес /bin/sh - 0xb7f58aaa

Перезапускаю программу в gdb с помощью команды: r $(python -c 'print "\x41" * 36 + "\xaa\x8a\xf5\xb7" + "AAAA" + "\x00\x8c\xe1\xb7" ').
Но в стеке байты "\x00" перетираются другими. Получается адрес 0x00b7e18c, но нужен 0xb7e18c00.

Стек

1.png


Если перезапустить с помощью этой команды: r $(python -c 'print "\x41" * 36 + "\xaa\x8a\xf5\xb7" + "AAAA" + "\x01\x8c\xe1\xb7" '). Всё ок, но адрес не тот 0xb7e18c01.

Стек

2.png

Как сделать так, чтобы нулевые байты не перетирались?
 
Последнее редактирование:

Pernat1y

Well-known member
05.04.2018
1 443
135
BIT
0
0x00 - это конец строки. Он-же badchar в большинстве эксплоитов/шеллкодов. Изменить его поведение ты не сможешь.
 
Решение
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!