У меня есть следующий код, который должен отбрасывать оболочку, однако после запуска кода ничего не происходит.Вот код, который у меня есть.Это было взято из руководства шеллкодера.
`
char shellcode[] =
"\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46"
"\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 shellcode.c -o shellcode
Когда я запускаю его, происходит следующее.![Actual results of shellcode](https://i.stack.imgur.com/cWu1u.png)
Ожидаемый результат следующий.![Expected results of shellcode](https://i.stack.imgur.com/nK5FH.jpg)
Вот код, который дает вышеуказанные результаты:
int main()
{
char *name[2];
name[0] = "/bin/sh";
name[1] = 0x0;
execve(name[0], name, 0x0);
exit(0);
}
Я не уверен, почему это происходит.Я использую Ubuntu в Windows 10. Это может не повлиять на мои результаты, но я отключил ASLR.Это может быть проблемой.Я еще не пробовал это на ВМ.Я хотел попытаться выяснить, почему это не работает, прежде чем я это сделал.Если это неясно, пожалуйста, дайте мне знать, и я буду рад уточнить любые детали.
Я заранее благодарен за всю вашу помощь.
- ОБНОВЛЕНИЕ -
Мне удалось получить инструкции по сборке из предоставленного мною шеллкода.
![Assembly from above shellcode](https://i.stack.imgur.com/3t8k5.png)
Кто-нибудь видит какие-либо проблемы, из-за которых не удаляется оболочка?