[20160906]修改口令在記憶體中.txt

lfree發表於2016-09-06

[20160906]修改口令在記憶體中.txt

--昨天測試了在記憶體中修改資料塊的資訊,突然想到如果我修改在記憶體中資料塊sys.user$的口令的hash值,是否可以騙過系統認證,使
--用自己定製的口令。相關連結:http://blog.itpub.net/267265/viewspace-2124466/=>[20160904]在記憶體修改資料.txt

--仔細想想不對,我能修改sys.user$的口令的hash值在記憶體中資料塊,但是user名要作為資料字典加入共享池中,我僅僅修改資料塊顯
--然沒用,但是在unxi下一切皆檔案,如果我直接修改記憶體塊的對應資訊是否可行呢?測試看看。

1.環境:
SYS@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

--另外注意要使用asmm自動記憶體管理,這樣/dev/shm可以看到一個一個檔案。(如果使用手動管理設定memory_target=0.先擱置一邊).
--差別是如下:
$ ls -l /dev/shm/ora_book_*|wc
    153    1224   13346

SCOTT@book> column SPARE4 format a62
SCOTT@book> select password, spare4 from sys.user$ where name = 'SCOTT';

PASSWORD                       SPARE4
------------------------------ --------------------------------------------------------------
0EDE56329E1D82EA               S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF
--當前的口令是book.

--如果口令是tiger,顯示如下:(這步可以先做,確定下來)
SYS@book> select password, spare4 from sys.user$ where name = 'SCOTT';
PASSWORD                       SPARE4
------------------------------ --------------------------------------------------------------
F894844C34402B67               S:332623D5C1D6892E193E237C07028356C9E6E45E93A94AD331E059B88EEE

--我的測試就是修改口令為tiger.檢查使用tiger口令來連線scott使用者。

2.使用strings檢索
$ strings ora_book_* | grep 2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF
>S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EFl
S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF
>S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EFl
>S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EFl

$ grep 2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF ora_book_847*
Binary file ora_book_84738051_100 matches
Binary file ora_book_84738051_147 matches
Binary file ora_book_84738051_91 matches

--可以確定口令資訊就在這3個"檔案"中。

--以其中一個檔案為例:

$ strings -t d ora_book_84738051_100 | grep 2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF
3557487 >S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EFl
--//前面的數字就是偏移量 ,實際上口令的長度62,而前面有一些字元比如>,我使用bvi加入了一些餘量,選擇長度64.

--// -b 表示開始 -s 表示長度。
$ bvi -b 3557487 -s 64 ora_book_84738051_100

--替換S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF
--    S:332623D5C1D6892E193E237C07028356C9E6E45E93A94AD331E059B88EEE
--如果熟悉vi,使用bvi很簡單,按tab鍵移動到左邊,移動到單詞S開頭處,按R(事先copy和paste要修改的字串),直接替換就ok了。

--其他"檔案"如法炮製修改。其中ora_book_84738051_91存在2處。

$ strings -t d ora_book_84738051_91 | grep 2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF
2697155 >S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EFl
2697327 >S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EFl

$ bvi -b 2697155 -s 64 ora_book_84738051_91
$ bvi -b 2697327 -s 64 ora_book_84738051_91

3.修改完成檢查:
$ strings ora_book_* | grep 2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF

--已經沒有字串2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF。
--測試:

$ rlsql scott/tiger
SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 6 08:31:14 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

--^_^,已經把口令變成了tiger。而對應的資料塊並沒有修改。

SCOTT@book> select rowid,password, spare4 from sys.user$ where name = 'SCOTT';
ROWID              PASSWORD                       SPARE4
------------------ ------------------------------ --------------------------------------------------------------
AAAAAKAABAAAADVAAC 0EDE56329E1D82EA               S:332623D5C1D6892E193E237C07028356C9E6E45E93A94AD331E059B88EEE

--在記憶體的資料塊已經修改.

SCOTT@book> @ &r/rowid AAAAAKAABAAAADVAAC
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
        10          1        213          2   0x4000D5           1,213                alter system dump datafile 1 block 213 ;


--透過bbed觀察資料塊:
BBED> set dba 1,213
        DBA             0x004000d5 (4194517 1,213)

BBED> x /rccc *kdbr[10]
rowdata[0]                                  @1879
----------
flag@1879: 0x6c (KDRHFL, KDRHFF, KDRHFH, KDRHFC)
lock@1880: 0x02
cols@1881:   22

col    0[5] @1883: SCOTT
col    1[2] @1889: ..
col   2[16] @1892: 0EDE56329E1D82EA
col    3[2] @1909: ..
col    4[2] @1912: ..
col    5[7] @1915: xq.....
col    6[7] @1923: xt.....
col    7[7] @1931: xs.....
col    8[7] @1939: xs.....
col    9[1] @1947: .
col   10[0] @1949: *NULL*
col   11[2] @1950: ..
col   12[0] @1953: *NULL*
col   13[0] @1954: *NULL*
col   14[1] @1955: .
col   15[1] @1957: .
col  16[22] @1959: DEFAULT_CONSUMER_GROUP
col   17[0] @1982: *NULL*
col   18[1] @1983: .
col   19[0] @1985: *NULL*
col   20[0] @1986: *NULL*
col  21[62] @1987: S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF

--依舊是舊的口令在資料塊中。
SCOTT@book> alter system checkpoint ;
System altered.

--退出bbed在觀察,看到一樣。
BBED> x /rccc *kdbr[10]
rowdata[0]                                  @1879
----------
flag@1879: 0x6c (KDRHFL, KDRHFF, KDRHFH, KDRHFC)
lock@1880: 0x02
cols@1881:   22

col    0[5] @1883: SCOTT
col    1[2] @1889: ..
col   2[16] @1892: 0EDE56329E1D82EA
col    3[2] @1909: ..
col    4[2] @1912: ..
col    5[7] @1915: xq.....
col    6[7] @1923: xt.....
col    7[7] @1931: xs.....
col    8[7] @1939: xs.....
col    9[1] @1947: .
col   10[0] @1949: *NULL*
col   11[2] @1950: ..
col   12[0] @1953: *NULL*
col   13[0] @1954: *NULL*
col   14[1] @1955: .
col   15[1] @1957: .
col  16[22] @1959: DEFAULT_CONSUMER_GROUP
col   17[0] @1982: *NULL*
col   18[1] @1983: .
col   19[0] @1985: *NULL*
col   20[0] @1986: *NULL*
col  21[62] @1987: S:2B8D7DCC974D7ADF61D50A28F54E8C021D8998A639D1A93B8AC20FFB50EF

--重新啟動資料庫:
$ rlsql scott/book
SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 6 08:39:21 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

--又回到使用原來的口令book。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2124547/,如需轉載,請註明出處,否則將追究法律責任。

相關文章