pwn49


看出是静态编译,考虑用mprotect来修改它的权限

ctrl+s查看bss段,找要修改的范围

因为mprotect的地址选择的限制条件
我们把页面边界定为0x80DA000
接着就可以构造payload了
先调用mprotect函数修改权限,再用read函数把后门函数读入这个位置
之后控制返回地址让程序回到这个地方执行后门函数
脚本
1 | from pwn import * |
(找pop_ret时只需要控制是pop了那三个寄存器就可以)
mprotect

mprotect 系统调用有严格的页面对齐要求:
- 起始地址必须是页面边界(4KB个字节的倍数)(4KB=1000字节)
- 长度会被向上舍入到页面边界
- 区间长度 len 必须是页大小的整数倍
假设你的 BSS 段开始于 0x80DB320,len长度为1000:
内存布局:
1 | 0x80DA000 ┌─────────────────┐ ← 页面边界(4KB对齐) |
Comments
Comment plugin failed to load
Loading comment plugin