当前位置:首页 » 操作系统 » 发号网站源码

发号网站源码

发布时间: 2023-06-18 23:49:08

A. 僵尸网络是什么网络

僵尸网络
Botnet
僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序),从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
在Botnet的概念中有这样几个关键词。“bot程序”是robot的缩写,是指实现恶意控制功能的程序代码;“僵尸计算机”就是被植入bot的计算机;“控制服务器(Control Server)”是指控制和通信的中心服务器,在基于IRC(因特网中继聊天)协议进行控制的Botnet中,就是指提供IRC聊天服务的服务器。
Botnet
首先是一个可控制的网络,这个网络并不是指物理意义上具有拓扑结构的网络,它具有一定的分布性,随着bot程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。
其次,这个网络是采用了一定的恶意传播手段形成的,例如主动漏洞攻击,邮件病毒等各种病毒与蠕虫的传播手段,都可以用来进行Botnet的传播,从这个意义上讲,恶意程序bot也是一种病毒或蠕虫。
最后一点,也是Botnet的最主要的特点,就是可以一对多地执行相同的恶意行为,比如可以同时对某目标网站进行分布式拒绝服务(DDos)攻击,同时发送大量的垃圾邮件等,而正是这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源为其服务,这也是Botnet攻击模式近年来受到黑客青睐的根本原因。在执行恶意行为的时候,Botnet充当了一个攻击平台的角色,这也就使得Botnet不同于简单的病毒和蠕虫,也与通常意义的木马有所不同。

僵尸网络是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息,譬如银行帐户的密码与社会安全号码等也都可被黑客随意“取用”。因此,不论是对网络安全运行还是用户数据安全的保护来说,僵尸网络都是极具威胁的隐患。僵尸网络的威胁也因此成为目前一个国际上十分关注的问题。然而,发现一个僵尸网络是非常困难的,因为黑客通常远程、隐蔽地控制分散在网络上的“僵尸主机”,这些主机的用户往往并不知情。因此,僵尸网络是目前互联网上黑客最青睐的作案工具。

对网友而言,感染上“僵尸病毒”却十分容易。网络上搔首弄姿的美女、各种各样有趣的小游戏,都在吸引着网友轻轻一点鼠标。但事实上,点击之后毫无动静,原来一切只是骗局,意在诱惑网友下载有问题的软件。一旦这种有毒的软件进入到网友电脑,远端主机就可以发号施令,对电脑进行操控。

专家表示,每周平均新增数十万台任人遥控的僵尸电脑,任凭远端主机指挥,进行各种不法活动。多数时候,僵尸电脑的根本不晓得自己已被选中,任人摆布。

僵尸网络之所以出现,在家高速上网越来越普遍也是原因。高速上网可以处理(或制造)更多的流量,但高速上网家庭习惯将电脑长时间开机,唯有电脑开机,远端主机才可以对僵尸电脑发号施令。

网络专家称:“重要的硬件设施虽然非常重视杀毒、防黑客,但网络真正的安全漏洞来自于住家用户,这些个体户欠缺自我保护的知识,让网络充满地雷,进而对其他用户构成威胁。”

Botnet的发展过程
Botnet是随着自动智能程序的应用而逐渐发展起来的。在早期的IRC聊天网络中,有一些服务是重复出现的,如防止频道被滥用、管理权限、记录频道事件等一系列功能都可以由管理者编写的智能程序所完成。于是在1993 年,在IRC 聊天网络中出现了Bot 工具——Eggdrop,这是第一个bot程序,能够帮助用户方便地使用IRC 聊天网络。这种bot的功能是良性的,是出于服务的目的,然而这个设计思路却为黑客所利用,他们编写出了带有恶意的Bot 工具,开始对大量的受害主机进行控制,利用他们的资源以达到恶意目标。
20世纪90年代末,随着分布式拒绝服务攻击概念的成熟,出现了大量分布式拒绝服务攻击工具如TFN、TFN2K和Trinoo,攻击者利用这些工具控制大量的被感染主机,发动分布式拒绝服务攻击。而这些被控主机从一定意义上来说已经具有了Botnet的雏形。
1999 年,在第八届DEFCON 年会上发布的SubSeven 2.1 版开始使用IRC 协议构建攻击者对僵尸主机的控制信道,也成为第一个真正意义上的bot程序。随后基于IRC协议的bot程序的大量出现,如GTBot、Sdbot 等,使得基于IRC协议的Botnet成为主流。
2003 年之后,随着蠕虫技术的不断成熟,bot的传播开始使用蠕虫的主动传播技术,从而能够快速构建大规模的Botnet。着名的有2004年爆发的Agobot/Gaobot 和rBot/Spybot。同年出现的Phatbot 则在Agobot 的基础上,开始独立使用P2P 结构构建控制信道。
从良性bot的出现到恶意bot的实现,从被动传播到利用蠕虫技术主动传播,从使用简单的IRC协议构成控制信道到构建复杂多变P2P结构的控制模式,Botnet逐渐发展成规模庞大、功能多样、不易检测的恶意网络,给当前的网络安全带来了不容忽视的威胁。
Botnet的工作过程
Botnet的工作过程包括传播、加入和控制三个阶段。
一个Botnet首先需要的是具有一定规模的被控计算机,而这个规模是逐渐地随着采用某种或某几种传播手段的bot程序的扩散而形成的,在这个传播过程中有如下几种手段:
(1)主动攻击漏洞。其原理是通过攻击系统所存在的漏洞获得访问权,并在Shellcode 执行bot程序注入代码,将被攻击系统感染成为僵尸主机。属于此类的最基本的感染途径是攻击者手动地利用一系列黑客工具和脚本进行攻击,获得权限后下载bot程序执行。攻击者还会将僵尸程序和蠕虫技术进行结合,从而使bot程序能够进行自动传播,着名的bot样本AgoBot,就是实现了将bot程序的自动传播。
(2)邮件病毒。bot程序还会通过发送大量的邮件病毒传播自身,通常表现为在邮件附件中携带僵尸程序以及在邮件内容中包含下载执行bot程序的链接,并通过一系列社会工程学的技巧诱使接收者执行附件或点击链接,或是通过利用邮件客户端的漏洞自动执行,从而使得接收者主机被感染成为僵尸主机。
(3)即时通信软件。利用即时通信软件向好友列表发送执行僵尸程序的链接,并通过社会工程学技巧诱骗其点击,从而进行感染,如2005年年初爆发的MSN性感鸡(Worm.MSNLoveme)采用的就是这种方式。
(4)恶意网站脚本。攻击者在提供Web服务的网站中在HTML页面上绑定恶意的脚本,当访问者访问这些网站时就会执行恶意脚本,使得bot程序下载到主机上,并被自动执行。
(5)特洛伊木马。伪装成有用的软件,在网站、FTP 服务器、P2P 网络中提供,诱骗用户下载并执行。
通过以上几种传播手段可以看出,在Botnet的形成中传播方式与蠕虫和病毒以及功能复杂的间谍软件很相近。
在加入阶段,每一个被感染主机都会随着隐藏在自身上的bot程序的发作而加入到Botnet中去,加入的方式根据控制方式和通信协议的不同而有所不同。在基于IRC协议的Botnet中,感染bot程序的主机会登录到指定的服务器和频道中去,在登录成功后,在频道中等待控制者发来的恶意指令。图2为在实际的Botnet中看到的不断有新的bot加入到Botnet中的行为。
在控制阶段,攻击者通过中心服务器发送预先定义好的控制指令,让被感染主机执行恶意行为,如发起DDos攻击、窃取主机敏感信息、更新升级恶意程序等。图3为观测到的在控制阶段向内网传播恶意程序的Botnet行为。
Botnet的分类
Botnet根据分类标准的不同,可以有许多种分类。
按bot程序的种类分类
(1)Agobot/Phatbot/Forbot/XtremBot。这可能是最出名的僵尸工具。防病毒厂商Spphos 列出了超过500种已知的不同版本的Agobot(Sophos 病毒分析),这个数目也在稳步增长。僵尸工具本身使用跨平台的C++写成。Agobot 最新可获得的版本代码清晰并且有很好的抽象设计,以模块化的方式组合,添加命令或者其他漏洞的扫描器及攻击功能非常简单,并提供像文件和进程隐藏的Rootkit 能力在攻陷主机中隐藏自己。在获取该样本后对它进行逆向工程是比较困难的,因为它包含了监测调试器(Softice 和O11Dbg)和虚拟机(VMware 和Virtual PC)的功能。
(2)SDBot/RBot/UrBot/SpyBot/。这个家族的恶意软件目前是最活跃的bot程序软件,SDBot 由C语言写成。它提供了和Agobot 一样的功能特征,但是命令集没那么大,实现也没那么复杂。它是基于IRC协议的一类bot程序。
(3)GT-Bots。GT-Bots是基于当前比较流行的IRC客户端程序mIRC编写的,GT是(Global Threat)的缩写。这类僵尸工具用脚本和其他二进制文件开启一个mIRC聊天客户端, 但会隐藏原mIRC窗口。通过执行mIRC 脚本连接到指定的服务器频道上,等待恶意命令。这类bot程序由于捆绑了mIRC程序,所以体积会比较大,往往会大于1MB。
按Botnet的控制方式分类
(1)IRC Botnet。是指控制和通信方式为利用IRC协议的Botnet,形成这类Botnet的主要bot程序有spybot、GTbot和SDbot,目前绝大多数Botnet属于这一类别。
(2)AOL Botnet。与IRC Bot类似,AOL为美国在线提供的一种即时通信服务,这类Botnet是依托这种即时通信服务形成的网络而建立的,被感染主机登录到固定的服务器上接收控制命令。AIM-Canbot和Fizzer就采用了AOL Instant Messager实现对Bot的控制。
(3)P2P Botnet。这类Botnet中使用的bot程序本身包含了P2P的客户端,可以连入采用了Gnutella技术(一种开放源码的文件共享技术)的服务器,利用WASTE文件共享协议进行相互通信。由于这种协议分布式地进行连接,就使得每一个僵尸主机可以很方便地找到其他的僵尸主机并进行通信,而当有一些bot被查杀时,并不会影响到Botnet的生存,所以这类的Botnet具有不存在单点失效但实现相对复杂的特点。Agobot和Phatbot采用了P2P的方式。
Botnet的危害
Botnet构成了一个攻击平台,利用这个平台可以有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。下面是已经发现的利用Botnet发动的攻击行为。随着将来出现各种新的攻击类型,Botnet还可能被用来发起新的未知攻击。
(1)拒绝服务攻击。使用Botnet发动DDos攻击是当前最主要的威胁之一,攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的。由于Botnet可以形成庞大规模,而且利用其进行DDos攻击可以做到更好地同步,所以在发布控制指令时,能够使得DDos的危害更大,防范更难。
(2)发送垃圾邮件。一些bots会设立sockv4、v5 代理,这样就可以利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息。
(3)窃取秘密。Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。同时bot程序能够使用sniffer观测感兴趣的网络数据,从而获得网络流量中的秘密。
(4)滥用资源。攻击者利用Botnet从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失。例如:种植广告软件,点击指定的网站;利用僵尸主机的资源存储大型数据和违法数据等,利用僵尸主机搭建假冒的银行网站从事网络钓鱼的非法活动。
可以看出,Botnet无论是对整个网络还是对用户自身,都造成了比较严重的危害,我们要采取有效的方法减少Botnet的危害。
Botnet的研究现状
对于Botnet的研究是最近几年才逐渐开始的,从反病毒公司到学术研究机构都做了相关的研究工作。最先研究和应对Botnet的是反病毒厂商。它们从bot程序的恶意性出发,将其视为一种由后门工具、蠕虫、Spyware 等技术结合的恶意软件而归入了病毒的查杀范围。着名的各大反病毒厂商都将几个重要的bot程序特征码写入到病毒库中。赛门铁克从2004 年开始,在其每半年发布一次的安全趋势分析报告中,以单独的章节给出对Botnet活动的观测结果。卡巴斯基也在恶意软件趋势分析报告中指出,僵尸程序的盛行是2004年病毒领域最重大的变化。
学术界在2003年开始关注Botnet的发展。国际上的一些蜜网项目组和蜜网研究联盟的一些成员使用蜜网分析技术对Botnet的活动进行深入跟踪和分析,如Azusa Pacific大学的Bill McCarty、法国蜜网项目组的Richard Clarke、华盛顿大学Dave Dittrich和德国蜜网项目组。特别是德国蜜网项目组在2004年11月到2005 年1月通过部署Win32蜜罐机发现并对近100个Botnet进行了跟踪,并发布了Botnet跟踪的技术报告。
Botnet的一个主要威胁是作为攻击平台对指定的目标发起DDos(分布式拒绝服务攻击)攻击,所以DDos的研究人员同样也做了对Botnet的研究工作。由国外DDosVax组织的“Detecting Bots in Internet Relay Chat Systems”项目中,分析了基于IRC协议的bot程序的行为特征,在网络流量中择选出对应关系,从而检测出Botnet的存在。该组织的这个研究方法通过在plantlab中搭建一个Botnet的实验环境来进行测试,通过对得到的数据进行统计分析,可以有效验证关于Botnet特征流量的分析结果,但存在着一定的误报率。
国内在2005年时开始对Botnet有初步的研究工作。北京大学计算机科学技术研究所在2005年1月开始实施用蜜网跟踪Botnet的项目,对收集到的恶意软件样本,采用了沙箱、蜜网这两种各有优势的技术对其进行分析,确认其是否为僵尸程序,并对僵尸程序所要连接的Botnet控制信道的信息进行提取,最终获得了60,000 多个僵尸程序样本分析报告,并对其中500多个仍然活跃的Botnet进行跟踪,统计出所属国分布、规模分布等信息。
国家应急响应中心通过863-917网络安全监测平台,在2005年共监测到的节点大于1000个的Botnet规模与数量统计如图4所示。
这些数据和活动情况都说明,我国国内网上的Botnet的威胁比较严重,需要引起网络用户的高度重视。
CCERT恶意代码研究项目组在2005年7月开始对Botnet的研究工作,通过对大量已经掌握的Botnet的实际跟踪与深入分析,对基于IRC协议的Botnet的服务器端的特征进行了分类提取,形成对于Botnet 服务器端的判断规则,从而可以对网络中的IRC Server进行性质辨别。设计并初步实现了Botnet自动识别系统,应用于中国教育和科研计算机网络环境中。
可以看出,从国内到国外,自2004年以来对Botnet的研究越来越多地受到网络安全研究人员的重视,研究工作已经大大加强。但是这些工作还远远不够,在检测和处置Botnet方面还有许多工作要做。
Botnet的研究方法
对于目前比较流行的基于IRC协议的Botnet的研究方法,主要使用蜜网技术、网络流量研究以及IRC Server识别技术。
(1)使用蜜网技术。蜜网技术是从bot程序出发的,可以深入跟踪和分析Botnet的性质和特征。主要的研究过程是,首先通过密罐等手段尽可能多地获得各种流传在网上的bot程序样本;当获得bot程序样本后,采用逆向工程等恶意代码分析手段,获得隐藏在代码中的登录Botnet所需要的属性,如Botnet服务器地址、服务端口、指定的恶意频道名称及登录密码,以及登录所使用到的用户名称,这些信息都为今后有效地跟踪Botnet和深入分析Botnet的特征提供了条件。在具备了这些条件之后,使用伪装的客户端登录到Botnet中去,当确认其确实为Botnet后,可以对该Botnet采取相应的措施。
(2)网络流量研究。网络流量的研究思路是通过分析基于IRC协议的Botnet中僵尸主机的行为特征,将僵尸主机分为两类:长时间发呆型和快速加入型。具体来说就是僵尸主机在Botnet中存在着三个比较明显的行为特征,一是通过蠕虫传播的僵尸程序,大量的被其感染计算机会在很短的时间内加入到同一个IRC Server中;二是僵尸计算机一般会长时间在线;三是僵尸计算机作为一个IRC聊天的用户,在聊天频道内长时间不发言,保持空闲。将第一种行为特征归纳为快速加入型,将第二、三种行为特征归纳为长期发呆型。
研究对应这两类僵尸计算机行为的网络流量变化,使用离线和在线的两种分析方法,就可以实现对Botnet的判断。
(3)IRC Server识别技术的研究。通过登录大量实际的基于IRC协议的Botnet的服务器端,可以看到,由于攻击者为了隐藏自身而在服务器端刻意隐藏了IRC服务器的部分属性。同时,通过对bot源代码的分析看到,当被感染主机加入到控制服务器时,在服务器端能够表现出许多具有规律性的特征。通过对这些特征的归纳总结,就形成了可以用来判断基于IRC协议的Botnet的服务器端的规则,这样就可以直接确定出Botnet的位置及其规模、分布等性质,为下一步采取应对措施提供有力的定位支持。
以上三种研究方法都是针对基于IRC协议的Botnet。对于P2P结构的Botnet的研究较少,原因是由于其实现比较复杂,在网络中并不占有太大比例,同时也因为其在控制方式上的分布性使得对它的研究比较困难。但随着Botnet的发展,对于P2P结构的Botnet的研究也将进一步深入。

B. 关于SQL注入。

SQL注入原理深度解析作者:admin 文章来源:转载 点击数:699 更新时间:2008-8-29 -------------------------------------------------------------------------------- 对于Web应用来说,注射式攻击由来已久,攻击方式也五花八门,常见的攻击方式有SQL注射、命令注射以及新近才出现的XPath注射等等。本文将以SQL注射为例,在源码级对其攻击原理进行深入的讲解。 一、注射式攻击的原理 注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。 为了发动注射攻击,攻击者需要在常规输入中混入将被解释为命令的“数据”,要想成功,必须要做三件事情: 1.确定Web应用程序所使用的技术 注射式攻击对程序设计语言或者硬件关系密切,但是这些可以通过适当的踩点或者索性将所有常见的注射式攻击都搬出来逐个试一下就知道了。为了确定所采用的技术,攻击者可以考察Web页面的页脚,查看错误页面,检查页面源代码,或者使用诸如Nessus等工具来进行刺探。 2.确定所有可能的输入方式 Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单;另外,攻击者可以通过隐藏的HTML表单输入、HTTP头部、cookies、甚至对用户不可见的后端AJAX请求来跟Web应用进行交互。一般来说,所有HTTP的GET和POST都应当作用户输入。为了找出一个Web应用所有可能的用户输入,我们可以求助于Web代理,如Burp等。 3.查找可以用于注射的用户输入 在找出所有用户输入方式后,就要对这些输入方式进行筛选,找出其中可以注入命令的那些输入方式。这个任务好像有点难,但是这里有一个小窍门,那就是多多留意Web应用的错误页面,很多时候您能从这里得到意想不到的收获。 二、SQL注射原理 上面对注射攻击做了一般性的解释,下面我们以SQL注射为例进行讲解,以使读者对注射攻击有一个感性的认识,至于其他攻击,原理是一致的。 SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。 三、绕过用户认证 我们这里以一个需要用户身份认证的简单的Web应用程序为例进行讲解。假定这个应用程序提供一个登录页面,要求用户输入用户名和口令。用户通过HTTP请求发送他们的用户名和口令,之后,Web应用程序检查用户传递来用户名和口令跟数据库中的用户名和口令是否匹配。这种情况下,会要求在SQL数据库中使用一个数据库表。开发人员可以通过以下SQL语句来创建表: CREATETABLEuser_table( idINTEGERPRIMARYKEY, usernameVARCHAR(32), passwordVARCHAR(41) ); 上面的SQL代码将建立一个表,该表由三栏组成。第一栏存放的是用户ID,如果某人经过认证,则用此标识该用户。第二栏存放的是用户名,该用户名最多由32字符组成。第三栏存放的是口令,它由用户的口令的hash值组成,因为以明文的形式来存放用户的口令实在太危险,所以通常取口令的散列值进行存放。我们将使用SQL函数PASSWORD()来获得口令的hash值,在MySQL中,函数PASSWORD()的输出由41字符组成。 对一个用户进行认证,实际上就是将用户的输入即用户名和口令跟表中的各行进行比较,如果跟某行中的用户名和口令跟用户的输入完全匹配,那么该用户就会通过认证,并得到该行中的ID。假如用户提供的用户名和口令分别为lonelynerd15和mypassword,那么检查用户ID过程如下所示: SELECTidFROMuser_tableWHEREusername='lonelynerd15'ANDpassword=PASSWORD('mypassword') 如果该用户位于数据库的表中,这个SQL命令将返回该用户相应的ID,这就意味着该用户通过了认证;否则,这个SQL命令的返回为空,这意味着该用户没有通过认证。 下面是用来实现自动登录的Java代码,它从用户那里接收用户名和口令,然后通过一个SQL查询对用户进行认证: Stringusername=req.getParameter("username"); Stringpassword=req.getParameter("password"); Stringquery="SELECTidFROMuser_tableWHERE"+ "username='"+username+"'AND"+ "password=PASSWORD('"+password+"')"; ResultSetrs=stmt.executeQuery(query); intid=-1;//-. while(rs.next()){ id=rs.getInt("id"); } 开头两行代码从HTTP请求中取得用户输入,然后在下一行开始构造一个SQL查询。执行查询,然后在while()循环中得到结果,如果一个用户名和口令对匹配,就会返回正确的ID。否则,id的值仍然为-1,这意味着用户没有通过认证。表面上看,如果用户名和口令对匹配,那么该用户通过认证;否则,该用户不会通过认证——但是,事实果真如此吗?非也!读者也许已经注意到了,这里并没有对SQL命令进行设防,所以攻击者完全能够在用户名或者口令字段中注入SQL语句,从而改变SQL查询。为此,我们仔细研究一下上面的SQL查询字符串: Stringquery="SELECTidFROMuser_tableWHERE"+ "username='"+username+"'AND"+ "password=PASSWORD('"+password+"')"; 上述代码认为字符串username和password都是数据,不过,攻击者却可以随心所欲地输入任何字符。如果一位攻击者输入的用户名为 ’OR1=1— 而口令为 x 那么查询字符串将变成下面的样子: SELECTidFROMuser_tableWHEREusername=''OR1=1--'ANDpassword =PASSWORD('x') 该双划符号--告诉SQL解析器,右边的东西全部是注释,所以不必理会。这样,查询字符串相当于: SELECTidFROMuser_tableWHEREusername=''OR1=1 如今的SELECT语句跟以前的已经大相径庭了,因为现在只要用户名为长度为零的字符串''或1=1这两个条件中一个为真,就返回用户标识符ID——我们知道,1=1是恒为真的。所以这个语句将返回user_table中的所有ID。在此种情况下,攻击者在username字段放入的是SQL指令'OR1=1--而非数据。 四、构造SQL注射代码 为了成功地注入SQL命令,攻击者必须将开发人员的现有SQL命令转换成一个合法的SQL语句,当然,要盲注是有些难度的,但一般都是这样: 'OR1=1– 或者 ')OR1=1-- 此外,许多Web应用提供了带来错误报告和调试信息,例如,利用'OR1=1--对Web应用进行盲注时,经常看到如下所示的错误信息: Errorexecutingquery:YouhaveanerrorinyourSQLsyntax;tousenear'SELECT(title,body)FROMblog_tableWHEREcat='OR1=1'atline1 该错误信息详细地为我们展示了完整的SQL语句,在此种情况下,SQL数据库所期待的好象是一个整数,而非字符串,所以可以注入字符串OR1=1--,把单引号去掉就应该能成功注入了。对于大多数SQL数据库,攻击者可以在一行中放入多个SQL语句,只要各个语句的语法没有错误就行。在下面的代码中,我们展示了如何将username设为'OR1=1并把password设为x来返回最后的用户ID: Stringquery="SELECTidFROMuser_tableWHERE"+ "username='"+username+"'AND"+ "password=PASSWORD('"+password+"')"; 当然,攻击者可以注入其它的查询,例如,把username设为: 'OR1=1;DROPTABLEuser_table;-- 而这个查询将变成: SELECTidFROMuser_tableWHEREusername=''OR1=1;DROPTABLEuser_table;--'ANDpassword=PASSWORD('x'); 它相当于: SELECTidFROMuser_tableWHEREusername=''OR1=1;DROPTABLEuser_table; 这个语句将执行句法上完全正确的SELECT语句,并利用SQLDROP命令清空user_table。 注射式攻击不必非要进行盲式攻击,因为许多Web应用是利用开放源代码工具开发的,为了提高注射式攻击的成功率,我们可以下载免费的或者产品的试用版,然后在自己的系统上搭建测试系统。如果在测试系统上发现了错误,那么很可能同样的问题也会存在于所有使用该工具的Web应用身上。 五、小结 我们在本文中向读者介绍了注射攻击的根本原因,即没有对数据和命令进行严格区分。然后通过一些程序源码对SQL的攻击进行了细致的分析,使我们对SQL注射机理有了一个深入的认识。如果您是一名web应用开发人员,那么您就当心了,一定不要盲目相信用户端的输入,而要对用户输入的数据进行严格的“消毒”处理,否则的话,SQL注射将会不期而至。 【51CTO.COM 独家特稿,转载请注明出处及作者!】 本篇文章来源于 新世纪网安基地 (www.520hack.com) 原文出处: http://www.520hack.com/Article/Text5/server/200808/11251.html 详细吧。。 求给分额!

热点内容
安卓大屏音频怎么调 发布:2025-03-22 01:23:51 浏览:64
算法和架构 发布:2025-03-22 01:23:45 浏览:316
如何diy服务器 发布:2025-03-22 01:22:06 浏览:635
怎么看电脑的配置是什么版本锐龙 发布:2025-03-22 01:15:46 浏览:704
gradle命令编译apk 发布:2025-03-22 01:02:02 浏览:307
我的世界玩坏服务器 发布:2025-03-22 01:01:59 浏览:952
红米note安卓80怎么刷机 发布:2025-03-22 00:49:46 浏览:215
linux字体缓存 发布:2025-03-22 00:49:09 浏览:980
明锐pro为什么比高尔夫配置还要高 发布:2025-03-22 00:24:43 浏览:131
卖房解压担保 发布:2025-03-22 00:18:57 浏览:452