楼主: guoyJoe

[讨论] [有奖活动]BBED破解UPDATE恢复(只要你读懂块结构,再难的恢复也能破解!)

[复制链接]
论坛徽章:
0
51#
发表于 2014-6-19 16:52 | 只看该作者
很复杂的样子

使用道具 举报

回复
论坛徽章:
9
2014年世界杯参赛球队: 英格兰
日期:2014-06-13 11:23:032014年世界杯参赛球队: 洪都拉斯
日期:2014-06-20 17:20:52ITPUB14周年纪念章
日期:2015-10-26 17:24:11秀才
日期:2015-09-06 10:42:32秀才
日期:2015-12-14 15:09:38秀才
日期:2015-12-21 09:48:11秀才
日期:2016-01-05 09:35:58秀才
日期:2016-01-21 13:37:04
52#
发表于 2014-6-20 09:51 | 只看该作者
desert_xu 发表于 2014-6-18 14:18
update 之前和update 之后 数据结构比较

得出结果,update之前和之后 的 地址 不变

要努力学习 desert_xu, 讲解太精彩了

使用道具 举报

回复
论坛徽章:
1
日产
日期:2013-10-14 15:32:12
53#
发表于 2014-6-20 09:54 | 只看该作者
支持郭大,占楼

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
35
ITPUB社区12周年站庆徽章
日期:2013-11-07 10:34:33秀才
日期:2016-02-18 09:24:30秀才
日期:2016-01-21 13:37:04ITPUB14周年纪念章
日期:2015-10-26 17:23:44秀才
日期:2015-09-06 10:42:32天枰座
日期:2015-07-14 10:53:552015年新春福章
日期:2015-03-06 11:59:47喜羊羊
日期:2015-03-04 14:54:42itpub13周年纪念徽章
日期:2014-10-08 15:19:03目光如炬
日期:2014-06-16 06:00:12
54#
发表于 2014-6-20 11:05 | 只看该作者
我顶~

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
55#
 楼主| 发表于 2014-6-20 19:55 | 只看该作者
chenhuaDB 发表于 2014-6-20 09:54
支持郭大,占楼

    多谢支持

使用道具 举报

回复
论坛徽章:
0
56#
发表于 2014-6-21 08:43 | 只看该作者
没有用过BBDE
我用flashback技术,flash事务或flashback表,就可以达到恢复的效果

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
57#
发表于 2014-6-24 10:20 | 只看该作者
等长很容易做.

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
58#
发表于 2014-6-24 10:49 | 只看该作者
[20140624]bbed修改数据记录.txt

上午看了链接:
http://www.itpub.net/thread-1872851-1-1.html

自己也做一下看看.

SCOTT@test> @ver

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

create table itpub_t1 (id int,name varchar2(100));
insert into itpub_t1 values(1,'AAAAA');
insert into itpub_t1 values(2,'BBBBB');
commit;

update itpub_t1 set name='aaaaa' where name='AAAAA';
commit;

SCOTT@test>  select * from itpub_t1;
        ID NAME
---------- --------------------
         1 aaaaa
         2 BBBBB

--看看自己是否能恢复数据:


SCOTT@test>  select rowid,itpub_t1.* from itpub_t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AABF2CAAEAAAAJHAAA          1 aaaaa
AABF2CAAEAAAAJHAAB          2 BBBBB

SCOTT@test> @lookup_rowid  AABF2CAAEAAAAJHAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
    286082          4        583          0 4,583                alter system dump datafile 4 block 583 ;


SCOTT@test> alter system checkpoint;
System altered.

--保证写盘.最好关闭数据库操作bbed.

BBED> set dba 4,583
        DBA             0x01000247 (16777799 4,583)

BBED> p *kdbr[0]
rowdata[12]
-----------
ub1 rowdata[12]                             @8176     0x2c

BBED> x /rnc
rowdata[12]                                 @8176
-----------
flag@8176: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8177: 0x02
cols@8178:    2

col    0[2] @8179: 1
col    1[5] @8182: aaaaa


BBED> set offset 8183
        OFFSET          8183

--注意前面字符串前有一个长度指示器,偏移要加+1.

BBED>  modify  /c 'AAAAA'
BBED> modify  /c 'AAAAA'
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 583             Offsets: 8183 to 8191     Dba:0x01000247
-----------------------------------------------------------------
41414141 410106ce b4

<80 bytes per line>

BBED> p *kdbr[0]
rowdata[12]
-----------
ub1 rowdata[12]                             @8176     0x2c

BBED> x /rnc
rowdata[12]                                 @8176
-----------
flag@8176: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8177: 0x01
cols@8178:    2

col    0[2] @8179: 1
col    1[5] @8182: AAAAA


--ok 已经修改正确.
BBED> sum
Check value for File 4, Block 583:
current = 0x8a14, required = 0xaa14

--检查和不对.
BBED> sum apply
Check value for File 4, Block 583:
current = 0xaa14, required = 0xaa14


--重新启动数据库,ok.

SCOTT@test>  select rowid,itpub_t1.* from itpub_t1;

ROWID                      ID NAME
------------------ ---------- --------------------
AABF2CAAEAAAAJHAAA          1 AAAAA
AABF2CAAEAAAAJHAAB          2 BBBBB


使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
59#
 楼主| 发表于 2014-6-24 13:33 | 只看该作者
lfree 发表于 2014-6-24 10:49
[20140624]bbed修改数据记录.txt

上午看了链接:

:right::right:

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
60#
发表于 2014-6-25 09:18 | 只看该作者
[20140624]bbed修改数据记录(不等长).txt

http://www.itpub.net/thread-1872851-1-1.html

--给出的问题修改记录时,长度没有变化,如果存在变化,修改与原来的不同,要修改kdbr[0]的值.
--还有一些细节的步骤.

SCOTT@test> @ver

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

create table itpub_t1 (id int,name varchar2(100));
insert into itpub_t1 values(1,'AAAAA');
insert into itpub_t1 values(2,'BBBBB');
commit;
alter system checkpoint;


SCOTT@test> SCOTT@test> select rowid,itpub_t1.* from itpub_t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AABF2LAAEAAAAJEAAA          1 AAAAA
AABF2LAAEAAAAJEAAB          2 BBBBB

SCOTT@test> @lookup_rowid  AABF2LAAEAAAAJEAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
    286091          4        580          0 4,580                alter system dump datafile 4 block 580 ;


--bbed观察:
BBED> set dba 4,580
        DBA             0x01000244 (16777796 4,580)

BBED> p *kdbr[0]
rowdata[12]
-----------
ub1 rowdata[12]                             @8176     0x2c

BBED> x /rnc
rowdata[12]                                 @8176
-----------
flag@8176: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8177: 0x01
cols@8178:    2

col    0[2] @8179: 1
col    1[5] @8182: AAAAA
-- 行记录偏移在8176.

update itpub_t1 set name='1234' where name='AAAAA';
commit;

SCOTT@test> select rowid,itpub_t1.* from itpub_t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AABF2LAAEAAAAJEAAA          1 1234
AABF2LAAEAAAAJEAAB          2 BBBBB

alter system checkpoint;

--bbed观察:
BBED> set dba 4,580
        DBA             0x01000244 (16777796 4,580)

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8153     0x2c

BBED> x /rnc
rowdata[0]                                  @8153
----------
flag@8153: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8154: 0x02
cols@8155:    2

col    0[2] @8156: 1
col    1[4] @8159: 1234

BBED> set offset 8176
        OFFSET          8176

BBED> x /rnc
rowdata[23]                                 @8176
-----------
flag@8176: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8177: 0x00
cols@8178:    2

col    0[2] @8179: 1
col    1[5] @8182: AAAAA

--要恢复回来,仅仅需要修改kdbr[0] 的值=8076(少100,后面有说明).就ok了.
--关闭数据库来操作看看.

BBED> p kdbr
sb2 kdbr[0]                                 @118      8053
sb2 kdbr[1]                                 @120      8064

--修改kdbr[0]=8076,而不是8176[注意要减少100.]
--这个很容易观察,看现在的kdbr[0]=8053,对比前面的p *kdbr[0]看到的偏移量为8153,说明记录的是相对偏移量.

BBED> p kdbr[0]
sb2 kdbr[0]                                 @118      8053

BBED> dump /v count 2
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580   Offsets:  118 to  119                                      Dba:0x01000244
-----------------------------------------------------------------------------------------
751f                                  l u.

SYS@testdg> @10to16 8053
10 to 16 HEX   REVERSE16
-------------- ------------------
0000000001f75 0x751f0000
--正好对上的.注意修改时要小头在前(我的cpu是intel系列的).

SYS@testdg> @10to16 8076
10 to 16 HEX   REVERSE16
-------------- ------------------
0000000001f8c 0x8c1f0000

BBED> modify  /x  8c1f offset 118
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580  Offsets:  118 to  119                           Dba:0x01000244
----------------------------------------------------------------------------
8c1f

BBED> p kdbr[0]
sb2 kdbr[0]                                 @118      8076

BBED> p *kdbr[0]
rowdata[23]
-----------
ub1 rowdata[23]                             @8176     0x2c

BBED> x /rnc
rowdata[23]                                 @8176
-----------
flag@8176: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8177: 0x00
cols@8178:    2

col    0[2] @8179: 1
col    1[5] @8182: AAAAA

--已经指向了修改的位置,并且修改正确.

BBED> sum apply
Check value for File 4, Block 580:
current = 0x8473, required = 0x8473

BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle11g/oradata/test/users01.dbf
BLOCK = 580

Block Checking: DBA = 16777796, Block Type = KTB-managed data block
data header at 0x2a98318264
kdbchk: xaction header lock count mismatch
        trans=2 ilk=1 nlo=0
Block 580 failed with check code 6108

DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing   (Data) : 1
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

--依旧存在问题,没有修改正确.
--仔细观察lock@8154: 0x02 ,lock@8177: 0x00 不同,难道11g提交并没有清楚这个标志吗?

BBED> modify  /x  02 offset 8177
BBED> modify  /x  00 offset 8154

BBED> sum apply
Check value for File 4, Block 580:
current = 0x8671, required = 0x8671

BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle11g/oradata/test/users01.dbf
BLOCK = 580

Block Checking: DBA = 16777796, Block Type = KTB-managed data block
data header at 0x2a98318264
kdbchk: the amount of space used is not equal to block size
        used=46 fsc=1 avsp=8042 dtl=8088
Block 580 failed with check code 6110

DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing   (Data) : 1
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

--还有有问题.好像记录长度变化,导致一些记录信息不对.

BBED> p kdbh
struct kdbh, 14 bytes                       @100
   ub1 kdbhflag                             @100      0x00 (NONE)
   sb1 kdbhntab                             @101      1
   sb2 kdbhnrow                             @102      2
   sb2 kdbhfrre                             @104     -1
   sb2 kdbhfsbo                             @106      22
   sb2 kdbhfseo                             @108      8053
   sb2 kdbhavsp                             @110      8042
   sb2 kdbhtosp                             @112      8043

BBED> dump /v offset 110 count 4
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580                                                         Offsets:  110 to  113                                                      Dba:0x01000244
---------------------------------------------------------------------------------------------------------------------------------------------------------------
6a1f6b1f                                                                                                    l j.k.

<48 bytes per line>

BBED> modify /x 6b1f offset 110
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580                                                                    Offsets:  110 to  113                                                                 Dba:0x01000244
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6b1f6b1f

<80 bytes per line>

BBED> sum apply

BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle11g/oradata/test/users01.dbf
BLOCK = 580

Block Checking: DBA = 16777796, Block Type = KTB-managed data block
data header at 0x2a98318264
kdbchk: the amount of space used is not equal to block size
        used=46 fsc=1 avsp=8043 dtl=8088
Block 580 failed with check code 6110

DBVERIFY - Verification complete


BBED>  p ktbbhitl
struct ktbbhitl[0], 24 bytes                @44
   struct ktbitxid, 8 bytes                 @44
      ub2 kxidusn                           @44       0x0005
      ub2 kxidslt                           @46       0x0008
      ub4 kxidsqn                           @48       0x00005d6c
   struct ktbituba, 8 bytes                 @52
      ub4 kubadba                           @52       0x00c003b3
      ub2 kubaseq                           @56       0x1ff2
      ub1 kubarec                           @58       0x08
   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @62
      sb2 _ktbitfsc                         @62       0
      ub2 _ktbitwrp                         @62       0x0000
   ub4 ktbitbas                             @64       0xc2e7c553
struct ktbbhitl[1], 24 bytes                @68
   struct ktbitxid, 8 bytes                 @68
      ub2 kxidusn                           @68       0x0005
      ub2 kxidslt                           @70       0x0012
      ub4 kxidsqn                           @72       0x00005d70
   struct ktbituba, 8 bytes                 @76
      ub4 kubadba                           @76       0x00c003b7
      ub2 kubaseq                           @80       0x1ff2
      ub1 kubarec                           @82       0x0a
   ub2 ktbitflg                             @84       0x2001 (KTBFUPB)
   union _ktbitun, 2 bytes                  @86
      sb2 _ktbitfsc                         @86       1
      ub2 _ktbitwrp                         @86       0x0001
   ub4 ktbitbas                             @88       0xc2e7c87f

--修改以下位置为0
      sb2 _ktbitfsc                         @86       1
      ub2 _ktbitwrp                         @86       0x0001

BBED> modify /x 00 offset 86
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580                                                                    Offsets:   86 to   89                                                                 Dba:0x01000244
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
00007fc8


--
BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle11g/oradata/test/users01.dbf
BLOCK = 580

Block Checking: DBA = 16777796, Block Type = KTB-managed data block
data header at 0x2a9835e264
kdbchk: the amount of space used is not equal to block size
        used=46 fsc=0 avsp=8043 dtl=8088
Block 580 failed with check code 6110

--依旧不行.修好avsp=8042看看.

BBED> modify /x 6a1f offset 110
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580                                                                    Offsets:  110 to  113                                                                 Dba:0x01000244
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6a1f6b1f

<80 bytes per line>

BBED> modify /x 6a1f offset 112
File: /u01/app/oracle11g/oradata/test/users01.dbf (4)
Block: 580                                                                    Offsets:  112 to  115                                                                 Dba:0x01000244
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6a1f0000

<80 bytes per line>

BBED> sum apply
Check value for File 4, Block 580:
current = 0x8671, required = 0x8671

BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle11g/oradata/test/users01.dbf
BLOCK = 580


DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

--ok通过.

查看数据库:

SCOTT@test> select rowid,itpub_t1.* from itpub_t1;

ROWID                      ID NAME
------------------ ---------- --------------------
AABF2LAAEAAAAJEAAA          1 AAAAA
AABF2LAAEAAAAJEAAB          2 BBBBB

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表