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

  • 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

ROP

Red Team
27.08.2019
326
667
Привет, всем✋

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

Как сделать так, чтобы нулевые байты не перетирались?
 
Последнее редактирование:
0x00 - это конец строки. Он-же badchar в большинстве эксплоитов/шеллкодов. Изменить его поведение ты не сможешь.
 
Решение
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы