(这一章有些专业知识,看不懂的请跳到下一章。谢谢。)
“网站注入工具”自然是用来攻击网站的软件,比如特定的木马程序。
乐天银的想法是先在未来网络上下载一款适用的注入工具,然后使用SQL注入方法获取到钓鱼网站的数据库漏洞,最终注入准备好的木马信息,达到全面掌控对方服务器的目的。
“是该对那些嚣张无忌的骇客消消火焰了,嘿嘿,这样也可以提高我的黑客知识,一举两得,何乐而不为呢!”乐天银舒了口气,这之前自己也曾被“盗号高手”害得够呛,但那时可惜技术有限,也没去实践过,这次一定要出动出击了,打他个措手不及!
不一会儿,乐天银便在千叶搜索页面上查找到了N多极具专业性质的“网站注入工具”,其中一个美其名曰“爱国者007”的程序闪人了他的法眼。
乐天银随意打开“爱国者007”的下载网站,看到上面详细的用法说明以及众多超赞的评论,无疑选的就是这个了。
于是,乐天银很快把那套“网站注入工具”下载到了桌面上,等下就能派上用场。
乐天银虽然在黑客技术方面还只是一个原地踏步的菜鸟,但是,毕竟他也看过了不少相关的书籍资料,并在网上接触过一些正宗的黑客大爷,总体下来,肚子里多多少少塞着点东西。
至少,对于什么“SQL注入”,乐天银还是很熟悉的,也不想想他曾经正是利用这个法子端掉了日本的一家政府网站,不过主谋者是张大运。
过后乐天银在刚才张大运浏览的游戏论坛上找出了那家钓鱼网站的连接地址,点击鼠标左键。
此链接的后缀是“jixiangedou(极限格斗)”,非常吸引人的眼球,同时和其他钓鱼网站一样,都打着“此地无银三百两”的幌子,“劣迹”昭彰,没看清楚的人和网络新手还真容易上当。
“发现Virus.Win32.AutoRun.f样式的病毒体,此木马程序多次尝试窜改注册表数据,写入新的启动项,但是此进程已被全盘阻止。安全巡警并已对病毒来源进行了扫描追踪,以备标本,彻底阻杀。”
“新生代安全卫士”登时弹出对话框,上面的提示似曾相识,乐天银脑筋稍微一动就想到了:“你爷爷的,还玩‘AV终结者’,这病毒早过时了!”
乐天银设置了一下,先查杀完网页上的所有病毒体,尔后开始进行SQL注入。
www.jixiangedou.com的首页上,有名为“IE不能打开新窗口的多种解决方法”的链接,地址为“http://www.*****.com/?showdetail.asp?id=49”。
进入相对路径的网页,乐天银敲击键盘,在这个地址后面加上单引号“’”,按下回车键之后,服务器返回了下面的错误提示:
“MicrosoftJETDatabaseEngine错误‘80040e14‘
字符串的语法错误在查询表达式‘ID=49‘‘中。
/showdetail.asp,行8。”
从这个错误提示中乐天银看出了下面几点:
1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
2.程序没有判断客户端提交的数据是否符合程序要求。
3.该SQL语句所查询的表中有一名为ID的字段。
其实SQL注入的原理,便是从客户端提交特殊的代码,从而收集程序及服务器的信息,获取你想得到的资料。
第二步就是判断能否直接进行注入了,乐天银知道,不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为“处理URL时服务器上出错。请和系统管理员联络”,还有,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,如果你用单引号测试,是测不到注入点的……
不同的数据库的函数、注入方法都是有差异的,所以在注入之前,还要判断一下数据库的类型,一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一。
SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,那可以直接从出错信息获取,方法如下:
http://www.*****.com/?showdetail.asp?id=49anduser>0
这句语句很简单,但却包含了SQLServer特有注入方法的精髓,前面的语句是正常的,重点在anduser>0,大都清楚,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar,拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值”abc”转换数据类型为int的列时发生语法错误,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。
众所周知,SQLServer的用户sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。
上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。
如果服务器IIS不允许返回错误提示,那怎么判断数据库类型呢?
可以从Access和SQLServer和区别入手,Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。