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

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

Mogen

Red Team
27.08.2019
314
610
BIT
5
Привет, всем✋

Хочу задать вопрос.
Практикуюсь в атаке возврата в библиотеку. 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

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

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