ВОПРОС · Q&A

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

2 ответов 2,9 тыс.
Решение
0x00 - это конец строки. Он-же badchar в большинстве эксплоитов/шеллкодов. Изменить его поведение ты не сможешь.
Автор вопроса
Привет, всем✋

Хочу задать вопрос.
Практикуюсь в атаке возврата в библиотеку. 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 в большинстве эксплоитов/шеллкодов. Изменить его поведение ты не сможешь.
 
0x00 - это конец строки. Он-же badchar в большинстве эксплоитов/шеллкодов. Изменить его поведение ты не сможешь.
Спасибо за ответ. :)
Значит информацию об этом я плохо искал.