Почему шеллкод не работает? - PullRequest
2 голосов
/ 03 декабря 2011

Я пытаюсь сделать демонстрационный пример использования буферного потока. Я хочу использовать шелл-код для переполнения стека и получения sh сессии. Я могу следить за этим уроком http://www.shell -storm.org / paper / files / 432.pdf и даже создавать точно такой же шелл-код. Но я не могу заставить шеллкод запускаться с использованием shellcode3.c, как в учебнике. То, что я получил, это всегда "Ошибка сегментации".

Я использую «Red Hat Enterprise Linux AS выпуск 4 (Nahant Update 4)».

Я хочу знать, есть ли кто-нибудь, чтобы заставить его работать подобным способом? Нужно ли переходить на другую систему?

Ответы [ 3 ]

1 голос
/ 21 января 2012

Linux, который вы используете, является важным фактором;Вся структура стека будет отличаться для разных ОС.Хороший шелл-код не должен содержать нулевые байты, что остановит выполнение кода в буфере.

"\ xeb \ x1f \ x5e \ x89 \ x76 \ x08 \ x31 \ xc0 \ x88 \x46 \ x07 \ x89 \ x46 \ x0c \ xb0 \ x0b \ x89 \ xf3 \ x8d \ x4e \ x08 \ x8d \ x56 \ x0c \ xcd \ x80 \ x31 \ xdb \ x89 \ xd8 \ x40 \ xcd \ x80 \ xe8 \xdc \ xff \ xff \ xff / bin / sh "

Выше - хороший шелл-код, всего 46 байтов.Этот сайт поможет вам узнать структуру и другую информацию о вашем стеке Red-hat. Также вам нужно отключить все типы защиты стека, такие как execstack, Stack canaries, используя 'gcc -fno-stack-protector -o out test.c«

1 голос
/ 04 декабря 2011

Ошибка сегментации означает, что вы переполнили стек и вызвали сбой; вам нужно найти правильное смещение для EIP и поместить туда свой шеллкод. Если вы уверены, что поместили свой шелл-код в нужное место, вы всегда можете использовать Metasploit для генерации шелл-кода для своих нужд. Вам также необходимо убедиться, что вы отключили различные средства защиты от переполнения стека, которые включены по умолчанию в современных версиях Linux. Google скажет вам все, что вам нужно знать. Вы уже проверили http://www.corelan.be? Это для разработки эксплойтов Windows, но это хорошее место для начала.

0 голосов
/ 05 декабря 2011

Похоже, вы перезаписали стек, из-за которого произошла ошибка сегментации. Используйте отладчик, такой как gdb, чтобы узнать точное содержимое регистра EIP и адрес вашего шелл-кода. Они должны совпадать. Попробуйте выяснить, где делается прыжок и где он должен быть. Это даст вам лучшую идею.

...