Разница между переполнением буфера в 64-битных и 32-битных двоичных файлах - PullRequest
0 голосов
/ 12 июля 2020

Я слежу за статьей о распаковке двоичных файлов с использованием переполнения буфера. Это статья

https://www.exploit-db.com/docs/english/28479-return-oriented-programming- (rop-ftw) .pdf

Статья написана для 32-битной системы, а я использую 64-битную систему, поэтому Я пытаюсь понять, как решить проблему, с которой я столкнулся. Проблема в том, что этот метод требует записи «/ bin // sh» в раздел .data. В случае статьи раздел .data находится по адресу 0x080496f c - 0x08049704. В моей системе раздел .data находится по адресу 0x0000000008004000 - 0x0000000008004010. Я вижу в этом проблему, потому что я не могу писать нули, а в этом адресе есть нули. Существуют и другие разделы из общих объектов, начинающиеся с 0x00007fffff7b02a8, но я не думаю, что мне следует писать в эти разделы, потому что будут нарушения доступа к памяти, и в них все равно есть 2 нуля. Как вы записываете адреса в память в 64-битных системах?

...