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:
在这里插入图片描述在这里插入图片描述

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