2015-02-26 2 views
2

у меня есть эта маленькая программа, которая выполняет шеллкод:Перенаправление выхода из программы, которая выполняет шеллкод

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 

char shellcode[]="here is the bytecode"; 


int main(int main, char *argv[]) { 
     void (*ret)(); 
     ret = (void (*)())shellcode; 
     (void)(*ret)(); 
} 

я скомпилировать его с: gcc -o file file.c -fno-stack-protector -z execstack. Затем я пытаюсь перенаправить вывод в файл: ./file > tmp.txt Но он не работает. Ни это: ./file 2> tmp.txt или ./file &> tmp.txt

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

+0

Что делает шеллкод? Как распечатать свой результат? –

+0

это сработало @ccarton !! большое спасибо ;) –

ответ

1

Если перенаправление stdout и stderr не работает, программа, скорее всего, напрямую обратится к терминалу. Чтобы захватить прямой вывод терминала, вам нужно запустить программу с подключенным pseduo-tty. Самый простой способ сделать это (что я знаю) - использовать ssh. Попробуйте:

ssh -qt localhost "./file" > tmp.txt 2>&1

Вы хотите установить ключи SSH, чтобы избежать необходимости вводить учетные данные для входа.

Редактировать: Ой, мои переадресации были в неправильном порядке. Ошибка новичков.