一个Echo文件的程序

类别:编程语言 点击:0 评论:0 推荐:

 上次用sqlhello溢出时拿到一个shell,试了试at,可以执行,看来是管理员权限,可是却不能用net、ftp、tftp命令。晕,那偶怎么上传文件?

 呵呵,还好,难不到我。就将就那个shell在命令行下面echo一个webshell上去,然后再做打算。

 虽然只echo了一个几行的小程序,但是累死了,所以我就用C写了一个程序,以备下回遇到。

 原理很简单啦,就是在每一行代码前加“echo ”,后面加“ >>  echofile.txt”,注意要在特殊符号(<、>、&、|、"、^)前加^。

 代码如下:
#include "stdio.h"
#include <process.h>
#include <string.h>
void echo(char so[30] ,char sa[30])
{
 FILE *fp1,*fp2;
 char ch;
 if((fp1=fopen(so,"r"))==NULL){printf("Don't open file %s\n",so);exit(0);}
 if((fp2=fopen("echofile.txt","w"))==NULL){printf("Don't creat file \n");exit(0);}
 fputs("echo ",fp2);
 ch=fgetc(fp1);
 while(!feof(fp1))
 {
  if(ch=='^'||ch=='<'||ch=='>'||ch=='&'||ch=='|'||ch=='"')
  {
   fputc('^',fp2);
   fputc(ch,fp2);
  }
  else if(ch=='\n')
  {
   fputs(" >> ",fp2);
   fputs(sa,fp2);
   fputs("\n",fp2);
   fputs("echo ",fp2);
  }
  else
  {
   fputc(ch,fp2);
  }
  ch=fgetc(fp1);
 }
 fclose(fp1);
 fclose(fp2);
 
 printf("Done!\n");
}
int main(int argc, char* argv[])
{
 if(argc!=3)
 {
  printf("\n--------------------------------------------------------------------\n");
  printf("|       Echo File , by lake2 (http://mrhupo.126.com) 2004/10/09    |\n");
  printf("--------------------------------------------------------------------\n");
  printf("-I will write a file to echo-file lake2.txt :)\n");
  printf("-Usage:\n");
  printf("%s <SourseFile> <EchoSaveFile>\n",argv[0]);
  printf("-Examples: \n%s cmd.aspx cmd.txt\n",argv[0]);
  return 0;
 }
 echo(argv[1],argv[2]);
 return 0;
}

 参数有两个,就是shell文件名和要生成的文件名,程序将生成echofile.txt这个文件,里面包含了要echo的文件所要输入的所有命令(呵呵,有时最后一行会多一个echo,不过没关系的^_^)。

 现在就可以一行一行的复制了?呵呵,当然不。直接复制所有内容粘到shell就是了。命令行下有回车符它会自动执行前面的命令。呵呵,赶快去看看,webshell是不是生成了^_^

 另外问一下,在这种情况下,还有没有别的上传文件的方法?

                 by lake2
                2004-10-10

PS:蒙幻影旅团的高手看得起,被列为精华:)

本文地址:http://com.8s8s.com/it/it25184.htm