Эксплуатация ROP: запись в раздел .data SIGSEGV - PullRequest
0 голосов
/ 08 мая 2018

Я следую этому руководству по эксплуатации ROP. Когда я получаю карту памяти уязвимой программы, я получаю, что <__data_start> имеет значение 0x0000201c, что намного больше, чем предполагалось в этом руководстве. Чтобы написать в этом месте, я готовлю адрес в eax со следующими гаджетами

xor eax, eax;;      ; eax = 0
add eax, 0xd;;      ; eax = 0x0000000d
mov ah, 0x13;;      ; eax = 0x0000130d
add ah, al;;        ; eax = 0x0000200d
add eax, 0xf;;      ; eax = 0x0000201c

наконец, я использую инструкцию mov [eax] ecx для записи в .data, который должен быть RW, но я получаю ошибку сегментации SINSEGV. Я также пытался читать из GDB по этому адресу, но я получил сообщение, похожее на «память в 0x201c не может быть прочитана». Так как .data должен находиться в адресном пространстве процесса, я запутался ... Я предполагаю, что это должна быть какая-то защита либо от gcc, либо от ОС, но я не понимаю, какая именно. Любая идея? Если да, то можете ли вы объяснить, как он работает и можно ли его отключить?

Я отключил ASLR и выполняю 32-разрядную версию kali (Debian 4.14.12-2kali1 (2018-01-08)) с версией gcc 7.3.0 (Debian 7.3.0-11).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...