ASLR是一個kernel的保護機制,預設的情況下通常都是開的
ldd 是 Linux 系統中的一個命令,用於顯示可執行文件所依賴的shared libraries。這些共享庫是程序運行所需要的外部代碼庫,通常包括操作系統提供的標準庫以及應用程序中使用的其他庫
我拿一個chal做例子,當我們ldd一支library的時候,可以看到library(libc.so.6)是被mapping到0xf7cbb000
但是,我如果再做第二次呢? 就變不一樣了
在做第三遍,又不一樣了
可以看到以上上面三個MAP到的地址都是不一樣的,每次被載入都會在不同的位址,這個就是ASLR的保護機制
PIE可以看做是一種跟ASLR搭配的保護機制
拿之前打過的題目為例:
checksec:
exp.py:
我們可以發現他的leak都是0x55開頭,這也是辨識PIE的一種方法,如果之後再打題目的時候也可以去理解要怎麼利用漏洞拿到PIE base