[20160906]修改口令在記憶體中.txt
[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20160904]在記憶體修改資料.txt記憶體
- [20180604]在記憶體修改資料(bbed).txt記憶體
- linux中修改root口令Linux
- [20140928]資料庫建立在記憶體中.txt資料庫記憶體
- Jmeter:修改記憶體配置JMeter記憶體
- JAVA物件在JVM中記憶體分配Java物件JVM記憶體
- Tomcat修改記憶體配置Tomcat記憶體
- 修改/dev/shm共享記憶體dev記憶體
- 修改oracle記憶體佔用Oracle記憶體
- 在RAC中修改ASM例項的sys使用者口令ASM
- 修改asm口令ASM
- GO slice 切片-在記憶體中如何分配Go記憶體
- PostgreSQL Tuple在記憶體中組織形式SQL記憶體
- 陣列在記憶體中的變化陣列記憶體
- 修改後的 OpenJDK 記憶體模型JDK記憶體模型
- ptrace attach 修改程序記憶體記憶體
- JS中的棧記憶體、堆記憶體JS記憶體
- 堆外記憶體及其在 RxCache 中的使用記憶體
- 分析String在記憶體中的表現記憶體
- Linux中設定hugepages 在記憶體中 lock SGALinux記憶體
- WebLogic中修改系統管理員口令Web
- [20171101]修改oracle口令安全問題.txtOracle
- eclipse 增加記憶體的方法、修改配置檔案 記憶體優化Eclipse記憶體優化
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- Swift記憶體賦值探索一: 理解物件在記憶體中的儲存狀態Swift記憶體賦值物件
- 修改OracleLinux共享記憶體的大小OracleLinux記憶體
- 聚合記憶體在集合應該如何修改?記憶體
- 在 ArkTS 中,如何有效地進行記憶體管理和避免記憶體洩漏?記憶體
- 小數在記憶體中是如何儲存的?記憶體
- 【C語言】整型在記憶體中的儲存C語言記憶體
- 記憶體屏障在CPU、JVM、JDK中的實現記憶體JVMJDK
- 在C++Builder中建立共享記憶體段 (轉)C++UI記憶體
- 在Win32中管理虛擬記憶體 (轉)Win32記憶體
- win10家庭版修改記憶體怎麼修改Win10記憶體
- JVM中java例項物件在記憶體中的佈局JVMJava物件記憶體
- double型別資料在記憶體中中儲存格式型別記憶體
- [20241021]使用gdb檢視修改記憶體地址以及相關值.txt記憶體
- 什麼是Java記憶體模型(JMM)中的主記憶體和本地記憶體?Java記憶體模型