bugku pwn4

查看保護機制,沒有任何保護
在這裏插入圖片描述
拉入ida看一下
read函數是一個危險函數,造成棧溢出在這裏插入圖片描述
查看一下沒有binsh字符串,但在ida裏面看到哪個$0(這個在linux是shell腳本的名稱)
system()調用frok()產生子進程,由子進程來調用/bin/sh - c string來執行參數string字符串所代表的命令,系統調用
在這裏插入圖片描述
注一下:
ps 是顯示當前進程
ps a 顯示目前所有程序,包括其他用戶的程序
加上u就是表示以用戶爲主的格式來顯示程序目前的狀況
ps aux 顯示所有程序,不以終端來區分

echo 是輸出的意思,
下面的圖展示了$0在bash中的值,可以看到一開始的ps進程有8個,此時(echo $0)輸出$0,得到的是bash本身,單獨輸入$0,可以看到多了一個bash進程。
有了system函數和$0作爲參數,就可以進行溢出了。
在這裏插入圖片描述

還有要注意一下,64位是前6個通過寄存器傳參的,而32位是通過使用棧傳參,64位傳參分別是rdi rsi rdx rcx r8 r 9
我們可以用ROPgadget 工具進行查找,得到pop rdi ret 和$0的地址 ,system地址直接在ida查看
在這裏插入圖片描述

$0 查看
在這裏插入圖片描述
首先先填入緩衝區,大小爲8+16 來覆蓋rbp ,再傳入pop rdi ret 地址 和$0 (bin_sh),將棧中的$0的地址彈出,存入rdi 作爲參數,在傳入system地址進行調用

exp:
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章