[20241114]建立完善ext_kglob.sh脚本.txt

news/2024/11/16 21:13:21/文章来源:https://www.cnblogs.com/lfree/p/18549815
[20241114]建立完善ext_kglob.sh脚本.txt

--//以前考虑使用管道问题,我考虑复杂了,看了gdb文档,实际上gdb -ex参数支持在命令行加入执行命令。
--//选择使用mmon后台进程,改写如下:
$ cat ext_kglob.sh
#/bin/bash
# extrace object string from object handle address
# arg1=address arg2=offset (default 1c8) arg3=length (default 1)

offset=${2:-1c8}
length=${3:-1}
gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "x/${length}s 0x${1}+0x${offset}" -ex "quit" |  grep "^0x" | grep -v "^0x0"

--//21c下偏移在0x1c8,11g下偏移在1a8,根据环境需要修改。
--//该工具仅仅建议在测试环境学习使用。
--//简单验证看看:
SCOTT@book01p> select * from dept where deptno=40;

    DEPTNO DNAME                          LOC
---------- ------------------------------ -------------
        40 OPERATIONS                     BOSTON

SCOTT@book01p> @ hash

HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX   SQL_EXEC_START      SQL_EXEC_ID
---------- ------------- ------------ ---------- --------------- ---------- ------------------- -----------
3912471479 14ymr4znm74xr            0     103351      2852011669  e93393b7  2024-11-14 09:18:39    16777216

SYS@book> @ sharepool/shp4p 14ymr4znm74xr 0
SYS@book> @ pr
==============================
HANDLE_TYPE                   : parent handle address
KGLHDADR                      : 0000000062B283D0
KGLHDPAR                      : 0000000062B283D0
C40                           : select * from dept where deptno=40
KGLHDLMD                      : 0
KGLHDPMD                      : 0
KGLHDIVC                      : 0
KGLOBHD0                      : 0000000062B28210
KGLOBHD6                      : 00
KGLOBHS0                      : 4064
KGLOBHS6                      : 0
KGLOBT16                      : 0
N0_6_16                       : 4064
N20                           : 4064
KGLNAHSH                      : 3912471479
KGLOBT03                      : 14ymr4znm74xr
KGLOBT09                      : 65535
PL/SQL procedure successfully completed.

$ ext_kglob.sh 0000000062B283D0
0x62b28598:     "select * from dept where deptno=40"

--//如果你不确定定位偏移或者不对,可以通过简单的方法执行确定:
$ ext_kglob.sh 0000000062B283D0 0 816 | grep -i select
0x62b28598:     "select * from dept where deptno=40"
--//21c下偏移在0x1c8,11g下偏移在1a8,根据环境需要修改。
--//0x62b28598-0x0000000062B283D0 = 0x1c8

--//看看表dept对象。
$ sql_idz.sh 'DEPT.SCOTT.BOOK01P\x1\0\0\0' 3
sql_text = DEPT.SCOTT.BOOK01P\x1\0\0\0
full_hash_value(16) = 05DB243908B3C797B99628590EDB820C or 05db243908b3c797b99628590edb820c
xxxxx_matching_signature(10) = -5073823567219817972 or  13372920506489733644
hash_value(10) = 249266700 or hash_value(16) = 0EDB820C or 0edb820c
sql_id(16) = B99628590EDB820C or b99628590edb820c
sql_id(32) = bm5j8b47dr0hc
sql_id(32) = bm5j8b47dr0hc
sql_id(32) = bm5j8b47dr0hc

SYS@book> @ sharepool/shp4p '' 249266700
SYS@book> @ pr
==============================
HANDLE_TYPE                   : parent handle address
KGLHDADR                      : 0000000062B02760
KGLHDPAR                      : 0000000062B02760
C40                           : DEPT.SCOTT
KGLHDLMD                      : 0
KGLHDPMD                      : 0
KGLHDIVC                      : 0
KGLOBHD0                      : 0000000062B02070
KGLOBHD6                      : 00
KGLOBHS0                      : 4064
KGLOBHS6                      : 0
KGLOBT16                      : 0
N0_6_16                       : 4064
N20                           : 4064
KGLNAHSH                      : 249266700
KGLOBT03                      :
KGLOBT09                      : 0
PL/SQL procedure successfully completed.

$ ext_kglob.sh 0000000062B02760
0x62b02928:     "DEPTSCOTTBOOK01P\030F\260b"
--//后面取到一些乱码是正常的。

--//顺便SQL测试中间出现\0会是怎么情况。

$ echo -e "select 'A\0' from dual;" >| gg1.txt
$ xxd -c 16  gg1.txt
0000000: 7365 6c65 6374 2027 4100 2720 6672 6f6d  select 'A.' from
0000010: 2064 7561 6c3b 0a                         dual;.

SCOTT@book01p> set echo on
SCOTT@book01p> @ gg1.txt;
SCOTT@book01p> select 'A
  2  ;
ERROR:
ORA-01756: quoted string not properly terminated
--//sqlplus在读取到chr(0)时中断了,变成不正确的sql语句,无法测试。

$ ext_kglob.sh 00000000623AF968
0x623afb30:     "select 'A\001' from dual"
--//换成\01的测试结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834793.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# 团队作业4——项目冲刺-6

团队作业4——项目冲刺-6信息项 内容课程名称 广工计院计科34班软工作业要求位置 作业要求作业目标 在七天敏捷冲刺中,完成工大严选开发,记录每日进展和问题,更新燃尽图、签入代码,并发布集合日志总结成果GitHub链接 GitHub一、团队简介队名:小飞棍队团队成员:姓名 学号罗…

20222427 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.1 本周内容总结使用了Metasploit框架,其是一个功能强大的渗透测试框架。在使用的过程当中,Metasploit 提供了种类繁多的攻击模块,涵盖了远程代码执行、服务拒绝、提权等多种攻击方式,支持对多种操作系统和应用程序进行测试。除了漏洞利用,它还具备强大的后渗…

20222306 2024-2025-1《网络与系统攻防技术》实验六实验报告

1.实验内容 1.1内容回顾总结 这周都重点在于Metasploit工具的使用,我深入了解了对其功能和使用流程。Metasploit 是一个功能强大的渗透测试框架,广泛应用于网络安全领域。它为安全专家、渗透测试人员和红队提供了一个全面的工具集,支持漏洞利用、攻击模拟和安全评估。Metaspl…

关于HDFS路径文件夹名称的问题

问题发现 ​ 最开始的需求:修改/origin_data/gmall/db目录下所有以inc结尾的文件夹里的文件夹(名称为2024-11-15)修改为2020-6-14 问gpt写了个脚本: #!/bin/bash# 遍历 /origin_data/gmall/db 下所有以 "inc" 结尾的文件夹 for dir in $(hdfs dfs -ls /origin_da…

2024数据采集与融合技术实践-作业4

作业①: 1)使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 1.核心代码描述 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDri…

第七章课后习题

习题7.1点击查看代码 import numpy as np from scipy.interpolate import interp1d from scipy.integrate import quad import matplotlib.pyplot as pltg = lambda x: (3 * x ** 2 + 4 * x + 6) * np.sin(x) / (x ** 2 + 8 * x + 6) x0 = np.linspace(0, 10, 1000) y0 = g(x0)…

第八章课后习题

习题8.4点击查看代码 from scipy.integrate import odeint import numpy as np import matplotlib.pyplot as plt # 设置 Matplotlib 不使用 LaTeX plt.rc(font, size=15) plt.rc(text, usetex=False)# 定义微分方程系统 dz = lambda z, t: [-z[0]**3 - z[1], z[0] - z[1]**3]#…

Solidity学习笔记-1

01.Hello World 开发工具 Remix // SPDX-License-Identifier: MIT // 软件许可,不写编译会出现警告 // 版本,“0.8.21”-->不能小于这个版本,"^"-->不能大于0.9.0 pragma solidity ^0.8.21; // 创建合约 contract HelloWorld {string public helloworld = &quo…

gofiber: 使用模板

一,安装模板库 $ go get github.com/gofiber/template/html/v2 go: downloading github.com/gofiber/template/html/v2 v2.1.2 go: downloading github.com/gofiber/utils v1.1.0 go: added github.com/gofiber/template/html/v2 v2.1.2 go: added github.com/gofiber/utils v…

书生共学大模型实战营第4期 L1G6000 OpenCompass评测作业

基础任务:使用OpenCompass评测浦语API记录复现过程并截图 按照教程流程进行,这里我们采用的测试样本数为2,所以不同于教程,Acc可能为0,25%,50%,75%,100%,介绍两个遇到的bug:metadata模块导入错误:ModuleNotFoundError: No module named importlib.metadata解决方法:…

ShardingSphere如何轻松驾驭Seata柔性分布式事务?

0 前文 上一文解析了 ShardingSphere 强一致性事务支持 XAShardingTransactionManager ,本文继续:讲解该类 介绍支持柔性事务的 SeataATShardingTransactionManagersharding-transaction-xa-core中关于 XAShardingTransactionManager,本文研究 XATransactionManager 和 Shar…

20222303 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 1.1 本周学习内容回顾 使用了Metasploit框架,其是一个功能强大的渗透测试框架。在使用的过程当中,Metasploit 提供了种类繁多的攻击模块,涵盖了远程代码执行、服务拒绝、提权等多种攻击方式,支持对多种操作系统和应用程序进行测试。除了漏洞利用,它还具备强大的…