shellcode是3用于完成某個功能的匯編代碼澳淑。通常用于獲得目標系統(tǒng)的shell廷没。
查看下程序的保護
沒有開啟任何保護
在IDA中看到
gets函數(shù)明顯的棧溢出漏洞
gets中獲取的輸入還會被復(fù)制到buf2中盗蟆,且buf2存在于.bss段中
buf2存在與.bss段
.bss段通常時用來存放程序中未初始化的或者初始化為0的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域虫埂。特點是可讀寫贷盲,在程序執(zhí)行之前.bss段會自動清0。
因此我們需要看buf2所在的.bss段是否可執(zhí)行拟逮,若可執(zhí)行則可以寫入shellcode然后執(zhí)行shellcode從而得到系統(tǒng)shell撬统。
用vmmap命令即可看.bss段是否可執(zhí)行
.bss段處于0x0804a000到0x0804b000
腳本
方法str.ljust(a,'b')即字符串str不夠長度a時用字符b填充。
運行結(jié)果