Я экспериментирую с шеллкодеком, прежде чем углубляться в него, поэтому я наткнулся на пример из руководства по shellcoders. Пример следующий:ошибка сегментации при запуске shellcode
char shellcode[] = "\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x4
\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1\xff\xff\xff\x2f\x62\x69
\x6e\x2f\x73\x68";
int main() {
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)shellcode;
}
Школьный код должен порождать оболочку. Однако я получаю ошибку ошибки сегментации. Я скомпилировал программу, используя gcc
компилятор с -fno-stack-protector
и -z execstack
. Я взял быстрый взгляд на команду readelf
, и было ясно, что стек является исполняемым
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
Обратные ссылки служат для цитирования кода, а не для того, чтобы добавить акцент. –