writeup鏈接: https://pan.baidu.com/s/1mip9WaG 密碼: ypza
獲取權(quán)限的思路:
利用密碼備份文件,暴力破解
競爭
利用程序中調(diào)用的 ?系統(tǒng)調(diào)用函數(shù)如:system哈打,popen瓮钥,cmd等
溢出
資源未釋放漏洞
tips:
幾個(gè)描述符:0(標(biāo)準(zhǔn)輸入) 1(標(biāo)準(zhǔn)輸出) 2 (錯(cuò)誤輸出)3 (文件描述符)
通過向其他用戶運(yùn)行的程序文件中注入或添加自己的程序文件瓣俯,可以實(shí)現(xiàn)提權(quán)操作
ll 查看文件具體權(quán)限相關(guān)
tmp 文件夾讀寫權(quán)限門檻最低(所有用戶都可以可寫可讀),可以用于提權(quán)輔助
linux的shell環(huán)境下 ? ${變量名,,} ?即可將變量轉(zhuǎn)換成小寫
pickle的dump之后的文件操作碼: c S p0等等 ? pickle.loads("""cos\nsystem\n(S'ps'\ntR.""")
Linux 中的進(jìn)程有父子關(guān)系,當(dāng)子進(jìn)程銷毀時(shí)落包,父進(jìn)程需要回收它焊傅。如果在子進(jìn)程執(zhí)行完畢之前剂陡,父進(jìn)程因?yàn)榉N種原因被銷毀了,那么子進(jìn)程就變成了孤兒進(jìn)程狐胎,收養(yǎng)它的是 init 進(jìn)程鸭栖,它的 pid 是 1。
chmod 更改權(quán)限
gdb 修改寄存器的值: set $eax=XXX
getopt相關(guān)
getopt只是一個(gè)簡單的解析命令可選項(xiàng)的函數(shù)握巢,只能進(jìn)行簡單的格式命令解析
int getopt(int argc,char* const argv[],const char* optstring);
如getopt返回-1晕鹊,表示argv[]中的所有選項(xiàng)被解析出
optstring指定選項(xiàng)合法的選項(xiàng),一個(gè)字符代表一個(gè)選項(xiàng),在字符后面加一個(gè)':'表示該選項(xiàng)帶一個(gè)參數(shù)
/etc/passwd相關(guān)
cat /etc/passwd 查看權(quán)限UID
傳統(tǒng)UNIX的密碼存儲(chǔ)方式是直接在/etc/passwd(所有合法用戶都可訪問)里捏题,后期版本存儲(chǔ)在/etc/shadow(只有root可讀的)
在/etc/shadow文件中的記錄行內(nèi)容用‘:’隔開玻褪,為:【登錄名:加密口令:最后一次修改時(shí)間:最小時(shí)間間隔:最大時(shí)間間隔:警告時(shí)間:不活動(dòng)時(shí)間:失效時(shí)間:標(biāo)志】
/etc/passwd文件存放的是用戶的信息,由6個(gè)分號(hào)組成的7個(gè)信息,解釋如下:
【用戶名:密碼(已經(jīng)加密):UID(用戶標(biāo)識(shí)):GID(組標(biāo)識(shí)):用戶信息:主目錄:Shell(對(duì)登錄命令進(jìn)行解析的工具)】
john破解密碼
(Ubuntu下安裝:sudo apt-get install john)
john -single shadow.txt(提取的某一行用戶完整信息)
john -wordfile:password.lst -rules shadow.txt 使用字典
john -i:all shadow.txt(全部密鑰空間配對(duì))
linux環(huán)境變量
查看PATH:echo $PATH
添加變量:export? PATH=/usr/local/mongodb/bin:$PATH 【只對(duì)當(dāng)前shell(BASH)有效(臨時(shí)的)】
? ? ? ? ? ? ? ? ? /etc/profile文件中添加變量【對(duì)所有用戶生效(永久的)】
? ? ? ? ? ? ? ? ? 在用戶目錄下的.bash_profile文件中增加變量【對(duì)單一用戶生效(永久的)】
修改環(huán)境變量:例如USER=“XXXXX”即可
ssh相關(guān)
實(shí)現(xiàn)字符界面的遠(yuǎn)程登錄管理,它默認(rèn)使用22號(hào)端口
簡單連接方式:ssh user@hostname公荧,或者指定端口ssh -p 10022 user@hostname带射,-X可以添加圖形化界面功能(即可以打開某些圖形化界面程序)
可以在/etc/ssh/sshd_config進(jìn)行編輯,修改ssh的配置
ssh-keygen -t dsa 創(chuàng)建一個(gè)密鑰 ?(ssh-keygen -F IP 查看與之配對(duì)情況)
(ssh 驗(yàn)證時(shí)用的私鑰公鑰就放在home目錄中的.ssh 目錄里)
某些情況下, 比如主機(jī)地址更改或者不再使用某個(gè)密鑰, 你就可能需要?jiǎng)h除某個(gè)密鑰
ssh-keygen -R IP 或者手動(dòng)刪除 ~.ssh 文件夾
windows平臺(tái)下還有putty循狰,xshell程序可以用于ssh窟社,ftp,telnet等連接
tar 相關(guān) ?
x(解壓) ?c(加壓) t(打開壓縮包)
-v 顯示壓縮文件
-z 以gzip方式壓縮(一般格式為xx.tar.gz或xx. tgz)
-j? 以bzip2方式壓縮(一般格式為xx.tar.bz2)
-f :使用檔名
設(shè)置壓縮目錄:-C dir(參數(shù)的作用在于改變工作目錄) 如:tar -cvf file2.tar -C /home/usr2 file2
php的preg_replace相關(guān)
第一個(gè)參數(shù)后使用了/e绪钥,即啟用/e 模式灿里,那么 preg_replace 的第二個(gè)參數(shù)將會(huì)被作為代碼執(zhí)行。(/e 這個(gè)修飾符的意思 就是讓 正則替換的 時(shí)候 替換規(guī)則 支持 php 代碼)
在 php 變量引用中程腹,如果雙引號(hào)的字符串出現(xiàn)了“$變量名”或“${變量}”的形式匣吊,最終引用的是變量值。同樣的思想寸潦,如果是函數(shù)色鸳,則引用的是函數(shù)的返回結(jié)果。
“\”主要用于轉(zhuǎn)義见转,“/”主要用于描述模式命雀。
linux下的find
find / -uid 掃描當(dāng)前目錄以及其子文件,查找符合UID值的文件(例如find / -uid 999 2>/dev/null)
-name? filename? ? ? ? ? ? #查找名為filename的文件
-user? ? username? ? ? ? ? ? #按文件屬主來查找
-group groupname??????????? #按組來查找
ln 鏈接指令使用
-s:進(jìn)行軟鏈結(jié)(symboliclink)? (軟連接可以跨文件系統(tǒng)斩箫,可以對(duì)一個(gè)不存在的文件名進(jìn)行連接)
不論是硬連結(jié)或軟鏈結(jié)都不會(huì)將原本的檔案復(fù)制一份吏砂,只會(huì)占用非常少量的磁盤空間
ln -s abc cde? ? #建立abc 的軟連接
ln abc?cde???????#建立abc的硬連接
rm -rf XXX ? ? ? #用于刪除鏈接
nice — 調(diào)整程序運(yùn)行的優(yōu)先級(jí)
nice -n 19 表示改變文件的執(zhí)行優(yōu)先級(jí),范圍是-20~19乘客,數(shù)字越低狐血,優(yōu)先級(jí)越高
access函數(shù)用于檢測文件存在與讀寫權(quán)限,windows下在<io.h>導(dǎo)入易核,linux在<unistd.h>導(dǎo)入
fread()與fwrite()
size_t fread(void*ptr, size_t size, size_t nmemb,FILE* stream);
size_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE* stream);
返回值:讀或?qū)懙挠涗洈?shù)氛雪,成功時(shí)返回的記錄數(shù)等于nmemb,出錯(cuò)或讀到文件末尾時(shí)返回的記錄,數(shù)小于nmemb耸成,也可能返回0报亩。參數(shù)size指出一條記錄的長度,而nmemb指出要讀或?qū)懚嗌贄l記錄.
strace 命令可跟蹤一個(gè)程序的系統(tǒng)調(diào)用
Linux 里動(dòng)態(tài)鏈接庫的文件名是以“.so.版本”號(hào)結(jié)尾的井氢,如:libc.so.6弦追。當(dāng)要調(diào)用動(dòng)態(tài)鏈接庫時(shí),先用dlopen 函數(shù)打開它花竞。之后動(dòng)態(tài)鏈接庫的入口函數(shù)首先得到執(zhí)行劲件,在 Win32 編程中掸哑,DLL 的入口函數(shù)是DllMain(好久沒搞 Windows 編程了,如果沒有記錯(cuò)的話)零远,Linux 的動(dòng)態(tài)鏈接庫的入口是_init苗分。_init 函數(shù)是在 gcc 命令編譯時(shí)自動(dòng)加入的,主要做一些全局變量之類的初始化操作牵辣。
通過__attribute ((constructor))摔癣,這是 gcc的一個(gè)特性,可以讓程序在執(zhí)行_init 函數(shù)之前纬向,就先執(zhí)行帶有__attribute ((constructor))的函數(shù)
gcc -fpic -shared -nostdlib libc.c -o libc.so.6. ? ? ? ? ? ? ? ? ? ? ? ? ?(加上-nostdlib 就可以消除“version ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GLIBC_2.1.3 not defined in file libc.so.6 with link timereference”提示了)
使用匯編自動(dòng)寫成一個(gè)system(在一些時(shí)候不能直接使用系統(tǒng)調(diào)用)
動(dòng)態(tài)鏈接庫的寫法