В качестве задания в курсе компьютерного проектирования моей команде приходится обращаться к оболочке с использованием ориентированного на результат программирования путем переполнения буфера и использования нескольких найденных гаджетов.Использование ROP для доступа к оболочке в ARM
Использование GDB мы нашли место строки «/ bin/ш» с помощью следующей команды:
(GDB) find &system, +9999999, "/bin/sh"
Затем с помощью нескольких гаджетов мы в состоянии загрузить его в r0 и оттуда мы можем запрыгнуть .
К сожалению, каждый раз, когда мы сталкиваемся с ошибкой сегмента, перед тем, как мы получим доступ к терминалу. Мы довольно потеряны в этом, и можем использовать любую помощь, которую вы могли бы нам дать. Кто-нибудь из вас знает какие-либо распространенные ошибки, которые вызывают это?
Наш стек выглядит это право, прежде чем идти через наши гаджеты и ввести систему:
(gdb) x/15a $sp
0xbefffb40: 0x85a4 0x42424141 0x44444343 0x46464545
0xbefffb50: 0xbeff0046 0xb6f55108 <inet6_opt_finish+56> 0xb6f84a60
0xb6f55104 <inet6_opt_finish+52>
0xbefffb60: 0x0 0xb6ea3f6c <__libc_system> 0x0 0x84d0 <main>
0xbefffb70: 0xb6ffc718 0xb6ffc400 0x0
и после того, как попасть в систему:
(gdb) x/10a $sp
0xbefffb68: 0x0 0x84d0 <main> 0xb6ffc718 0xb6ffc400
0xbefffb78: 0x0 0x0 0x83bc <_start> 0x0
0xbefffb88: 0x0 0x0
Что вы пытаетесь запустить? Текст '/ bin/sh''? Вам нужно запустить 'execv()' syscall или что-то в этом роде. Вам нужно добавить дополнительную информацию к своему вопросу. Вы использовали поисковик гаджета ROP в двоичном формате? Можете ли вы показать, какие из них вы выберете? –
Мы пытаемся запустить <__ libc_system> с аргументом «bin/sh /», хранящимся в r0, чтобы получить оболочку. Мы нашли гаджеты вручную, используя grep. Мы отредактируем сообщение, чтобы содержать распакованные гаджеты. – Tesnich