Solaris修改指定程序的cr uid

2021-12-30 09:39:09 字數 1494 閱讀 9347

solaris上用mdb修改指定程序的euid,本文就是解釋如何用mdb看一下核心資料結構,具體到這裡就是proc_t p_cred->cr_uid。當然,各位內行可以自行發散其意義,開腦洞。

普通使用者scz嘗試開啟/etc/shadow:

$ echo $$

25182

$ id

uid=1000(scz) gid=1(other)

$ vi /etc/shadowvi程序啟動,但報錯:

"/etc/shadow" permission denied在mdb裡修改vi程序的cr_uid(即euid):

> ::pgrep vi

s    pid   ppid   pgid    sid    uid      flags             addr name

r  19011  25182  19011  25182   1000 0x4a004000 00000300029a5380 vi

> 0t25182 ::pid2proc | ::print -at proc_t p_cred

300029a1840 struct cred *p_cred = 0x3000874fd30

> 0t19011 ::pid2proc | ::print -at proc_t p_cred

300029a53a0 struct cred *p_cred = 0x3000874fd30

> 00000300029a5380 ::print -at proc_t p_cred->cr_uid

3000874fd34 uid_t p_cred->cr_uid = 0x3e8

> ::sizeof uid_t

sizeof (uid_t) = 4

> 3000874fd34 /x

0x3000874fd34:  3e8

> 3000874fd34 /u

0x3000874fd34:  1000

> ! grep :1000: /etc/passwd

scz:x:1000:1:scz:/export/home/scz:/usr/bin/bash

> ! getent passwd 1000

scz:x:1000:1:scz:/export/home/scz:/usr/bin/bash

> 3000874fd34 /w 0

mdb: failed to write 0 at address 0x3000874fd34: target is not open for writing

> $w

> 3000874fd34 /w 0

0x3000874fd34:  0x3e8           =       0x0現在可以在vi裡執行:

:rew或

:r /etc/shadow注意,父子程序共用p_cred,修改vi程序的cr_uid,實際會導致bash的euid為0:

# id

uid=1000(scz) gid=1(other) euid=0(root)

Solaris下修改UDP引數的方法

如果要安裝rac環境,oracle推薦將udp的兩個引數udp xmit hiwat和udp recv hiwat從8192調整到65536。調整這兩個引數很簡單,執行 ndd set dev udp udp xmit hiwat 65536 ndd set dev udp udp recv hiw...

獲取或修改指定程序ID的記憶體資料

在程序id已知的前提下,如何獲取該程序在記憶體中的資料,下面提供一種方法。void getprocessmemory ulong pid,pvoid pvoid praddaddr size t nread bool isok readprocessmemory hprocess,praddaddr...

C 得到系統程序和結束某個指定的程序

獲得當前計算機系統內所有的已啟動的程序 system.diagnostics.process processoncomputer system.diagnostics.process.getprocesses foreach system.diagnostics.process p in proce...