Интерпретация шеллкода

Я вызываю шелл-код, используя переполнение буфера для порождения корневой оболочки. Может кто-нибудь объяснить, что именно делает этот шеллкод? Я пробовал разные шеллкоды для порождения корневой оболочки, но это был единственный, который работал для меня.

\x31\xdb\x89\xd8\xb0\x17\xcd\x80\x31\xdb
\x89\xd8\xb0\x2e\xcd\x80\x31\xc0\x50\x68
\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89
\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd
\x80

1 ответ

На первый взгляд код выглядит так: setuid(0), затем setgid(0)затем позвоните sys_execve() на некоторые значения (которые включают в себя коды ASCII для "/bin//sh").

Похоже, это чистый код "полезной нагрузки", так как я не вижу ничего, чтобы гарантировать, что код выполняется в первую очередь (переполнение буфера, разрушение стека и т. Д.).

(Спасибо @Hans Lub за ссылку на дизассемблер)

Другие вопросы по тегам