Способ оценки шелл-кода в Python? - PullRequest
4 голосов
/ 19 февраля 2011

Оценка образца шелл-кода с использованием C-программы не сложна. Это будет включать в себя сохранение шелл-кода в массиве символов, создание указателя на функцию, типизацию указателя, указание на массив и вызов функции (указателя).

Вот как это работает, при условии, что вы можете выполнить память в nastycode[]:

/* left harmless. Insert your own working example at your peril */
char nastycode[] = "\x00\x00\x00...";
void (*execute_ptr) (void);

execute_ptr = (void *)nastycode; /* point pointer at nasty code */
execute_ptr();                   /* execute it */

Есть ли способ сделать то же самое, используя код Python? Или тот факт, что код Python переводит в байт-код, делает такие попытки невозможными?

Ответы [ 3 ]

4 голосов
/ 19 февраля 2011

Единственный способ сделать это, если вы полагаетесь на библиотеку C. Переполнения буфера могут быть введены в python из его библиотечных привязок. Для ваших целей вы можете написать свою собственную простую библиотеку python на c и реализовать что-то вроде example3.c в Разбить стек для удовольствия и прибыли Aleph One . Как отметил Авило, вам придется беспокоиться о зонах NX, однако любой регион памяти можно снова сделать исполняемым, и это зависит от платформы. Также GCC использует стека канареек по умолчанию. Хотя этого можно избежать, просто переписав обратный адрес адресом, переданным функции, что оставит консервный завод без изменений. ASLR - это очень хорошая система безопасности, которую трудно обойти, но если вы передаете известный адрес в свой шелл-код, ASLR не должна быть проблемой.

0 голосов
/ 18 марта 2014

Это то, что вы ищете;)

http://libemu.carnivore.it/

Так как вы ищите питона:

https://github.com/buffer/pylibemu

0 голосов
/ 29 сентября 2011

Это возможно в python ... вы можете сделать свою собственную привязку к C, используя ctypes или просто использовать что-то вроде distorm

http://code.google.com/p/distorm/wiki/Python

Вы также можете проверить, как это делает дионея. Это приманка, но она будет тестировать шелл-код и выводить результаты.

http://dionaea.carnivore.it/

...