原创 sudo 控制權限原理

核心在於euid的控制,euid決定於可執行文件創建者的s標誌位。如果文件擁有s標誌位,那麼運行次可執行文件時,此進程的euid將會是創建者的id。如果沒有s標誌位,那麼運行的可執行文件euid將是運行者的id。 所以sudo 命

原创 linux 內核頁表替換

linux 內核頁表替換 一.linux本身關於頁表查找機制的代碼實現 1. 邏輯地址到頁表的查找過程 static int __follow_pte_pmd(struct mm_struct *mm, unsigned long

原创 內核漏洞利用方法

堆噴 //CVE-2016-8655 #define BUFSIZE 1408 char exploitbuf[BUFSIZE]; void kmalloc(void) { while(1) syscall

原创 qemu 搭建linux內核調試

1.建立鏡像啓動相應的內核模塊 查看驅動加載地址 #cat /porc/modules | grep driv cat /sys/modules/driv1/settings/.text cat g > /proc/sysrg-t

原创 linux 內核雙機調試

一. 內核修改 write protect kernel read-only data structures set loadable kernel module date as nx and text as RO 編譯選項去掉

原创 關於內存 頁 物理地址 虛擬地址的思考 漏洞利用思考

對於頁屬性的管理相應思考 我看了下,虛擬地址到物理地址的轉換很簡單,解釋虛擬頁號對應找到物理頁號,偏移計算出物理地址。而且虛擬偏移和物理偏移是一樣的。所以這裏這是虛擬頁好和物理頁號不可能是簡單的確定映射關係。一定有一個複雜的動態映

原创 泄露地址和利用總結

已知libc.so 棧執行保護---------->調用libc.so system("/bin/sh") 關閉ASLR system在內存中的地址不會變化 如果elf中調用了print和read,那麼我們就可以搜索

原创 linux 核心概念

makenod 創建設備文件 應用程序與系統驅動交互的文件中間形式,體現了linux一切皆文件的思想。 mknod 的標準形式爲: mknod DEVNAME {b | c} MAJOR MINOR 1,D

原创 linux 進程切換

內核中棧的管理情況如上,stack->pt_regs指向保存的用戶態棧信息。thread保存的是內核棧的信息。 task_struct數據結構中的stack成員指向thread_union結構(Linux內核通過thread_u

原创 Ftrace跟蹤內核

獲取內核模塊進程號 printk(“info (pid=%d comm=%d)\n”, current->pid,current->comm); 開啓ftrace跟蹤特定函數 這裏是 __alloc_pages_nodemas

原创 supervisor簡單使用方式

supervisord : 啓動supervisor supervisorctl reload :修改完配置文件重啓supervisor supervisorctl status :查看supervisor監管的進程狀態 supe

原创 VT技術和kvm

最近一直在是看VT和kvm技術相關的問題。在網上查了很多資料。很多直接從代碼將,各種流程圖和代碼貼出來。但突然感覺代碼不能直接這樣學。 應該帶着思考來。這裏列出幾個有疑問的點。 VT技術如何實現多個系統直接相互不影響 這個應該就是

原创 內聯jmp使用方法

#include <libunwind.h> #include <stdio.h> void foo() { int b = 3; int c = 4; char *str = "next hello \n";

原创 CVE-2019-11815內核競態漏洞推測

這個本來想看下利用過程,奈何沒找到poc. 感覺自己其實也懂不少原理了,來推測下吧。 https://www.freebuf.com/vuls/208256.html 補丁位置 根據官網漏洞信息,可以知道此漏洞大概是個uaf之類的

原创 CVE-2018-18955user_name_space空間越權漏洞

https://www.exploit-db.com/exploits/45886 漏洞原理 這個洞前前後後看了好幾遍,感覺是明白了。 大概是在用戶命名空間中NS1創建root用戶,然後創建嵌套命名空間NS2。 在NS2中映射大於