SQL注入黑客防线网站实例分析

所属分类: 网络安全 / 脚本攻防 阅读数: 360
收藏 0 赞 0 分享

今天到黑防站上去看看文章,可能出于“职业”习惯,看到?classid=1之类的东东就不由自主的想加点什么参数进去。
当在页面http://www.hacker.com.cn/article/index.asp?classid=3&Nclassid=13加上①and 1=1和②and 1=2,都提示“处理 URL 时服务器上出错。请和系统管理员联络”,看起来象已经过滤了非法提交,IIS也关闭了错误提示,再加上一个③单引号’的时候,也出同样的错误提示,然而明显与前两个错误提示不同,因为前者显示了黑客防线的Logo才提示错误,后者则是一个空白的错误提示页。

这可是我从来没碰到过的特殊情况,到底能不能注入呢?

换个角度,从程序员的思路是怎么写这段程序的。首先,如果是用cint之类函数,那三种测试方法错误提示应该是完全一样的;如果没过滤的话,①②的结果应该是不一样的。排除了几种情况,最后觉得极可能是部分语句过滤,出现这种情况很可能是cint语句不小心放到SQL语句的后面,在SQL语句通过后,后面的语句报错。

虽然还不很确定实际的程序是怎么写的,但可以确定,这确实是一个注入点!

根据我写的《SQL注入漏洞全接触》,下一步就是判断数据库类型,因为错误提示都被屏蔽,只能通过系统表测试了,输入:
 

http://www.hacker.com.cn/article/index.asp?classid=1 and (Select count(1) from sysobjects)>=0


提示出错,没出现Logo,说明是语句本身有错,极可能是表sysobjects不存在,也就是说数据库是Access,再拿一个Access应有的系统表试试(msysobjects在这个时候派不上用场,因为在Web下没有权限读取,SQL语句同样不能通过,所以,必须换个有权限的表如MSysAccessObjects),果然,出现了黑防的Logo,证实数据库确实是Access。
接下来的猜解就比较简单了,用(count(1) from admin)>=0测试出admin表存在,表中有username、password字段。本来以为下面就是用最普通的Ascii解码法猜解记录,小Case,没想到,一开始猜解,才发现这是最难啃的一块骨头:传统的Ascii对比中,无论条件是否成立,语句都是可以正确执行的,它是利用ASP的出错而非SQL语句的出错来发现错误的,在这个页面,不管你成不成立,都是显示一个Logo然后报错,根据无法做出判断。
冥思苦想了半个钟头,终于想出一种方法,让SQL语句有条件的报错,先看看语句:

 

http://www.hacker.com.cn/article/index.asp?classid=1 and (select top 1 iif(asc(mid(username,1,1))>96,1,username) from admin)>0

写出这个语句的时候,连我自己都好崇拜我自己,哈哈,别吐,解释一下,asc(mid(username,1,1))这个都看得懂,取username第一位的ASCII码,大于96的话,select出数字1,小于等于96的话,select输出字符串username,然后,拿select出的值与0比较。
1与0都是数字型,当ASCII码大于96的时候,SQL语句不会出错;username则是字符型,当ASCII码小于等于96的时候,SQL语句会出错。所以,两种情况的出错提示是不同的,我们可以根据出错提示判断语句是否成立,从而逐步缩小每一位字符的范围,得出username的值。
于是,根据上面所说的方法,得出username的值为:chr(98)+ chr(114)+ chr(105)+ chr(103)+ chr(104)+ chr(116)=bright,password的值为chr(109)+ chr(105)+ chr(110)+ chr(103)+ chr(116)+ chr(105) + chr(97)+ chr(110)=mingtian,解码完成。

更多精彩内容其他人还在看

php后门木马常用命令分析与防范

php后门木马对大家来说一点都不陌生吧,但是它的种类您又知多少呢?那我们应该如何防范呢
收藏 0 赞 0 分享

利用Request对象的包解析漏洞绕过防注入程序

利用Request对象的包解析漏洞绕过防注入程序,想要学习安全的朋友可以参考下
收藏 0 赞 0 分享

网站防范 "上传漏洞"入侵的方法

“上传漏洞”入侵是目前对网站最广泛的入侵方法。90%的具有上传页面的网站,都存在上传漏洞。本文将介绍常见的上传漏洞及其防范技巧。
收藏 0 赞 0 分享

如何检测SQL注入技术以及跨站脚本攻击

在最近两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循 安全代码进行开发,攻击者将通过80端口进入你的系统。广泛被使用的两个主要攻击技术是SQL注入[ref1]和CSS[
收藏 0 赞 0 分享

Oracle的使用技巧以及脚本代码

如何查看ORACLE的隐含参数?ORACLE的显式参数,除了在INIT.ORA文件中定义的外,在svrmgrl中用 show parameter * ,可以显示。但ORACLE还有一些参数是以 _ ,开头的。如我们非常熟悉的_offline_rollback_segments等。
收藏 0 赞 0 分享

php包含漏洞替代技术的方法与介绍 php文件包含漏洞详解

php开发者们犯得一个基本的错误是把一个不正当的变量传递给系统函数,特别是include()和require()这两个函数。 这个常见的错误导致了众所周知的远程文件包含漏洞和本地文件包含漏洞。
收藏 0 赞 0 分享

一次奇遇的渗透

其实这一步可以完全省略,都说了是奇遇了。其实就是检查下自己的站点是否安全
收藏 0 赞 0 分享

mssql2005 DB权限导出一句话

昨晚在拿站过程中遇到了个ASP+MSSQL2005的注入点,权限是DB_Owner的权限
收藏 0 赞 0 分享

PHP木马大全 一句话的PHP木马的防范

php后门木马对大家来说一点都不陌生吧,但是它的种类您又知多少呢
收藏 0 赞 0 分享

PoisonIvy Rat 远程溢出实战

这个Exploit已经集成在最新版本的Msf中了,老外的文章里也有源文件,可以修改后单独提出来.
收藏 0 赞 0 分享
查看更多