【WP】BUUCTF之not_the_same_3dsctf_2016
题目描述

看一下保护
IDA看一眼,明显是栈溢出漏洞
似乎跳转到这里可以,但是远端打不通
发现有函数mprotect,可以通过其修改一段指定内存区域的保护属性(变成rwx,可读可写可执行),从而填充shellcode拿到shell
mprotect函数原型如下:1
2
3
4int mprotect(const void* start, size_t len, int prot);
- void* start: 区段开始位置
- size_t len: 区段的大小
- int prot:区段的权限(可以用8进制来表示)
注意:
- 当prot = 7 = 4+2+1 为可读(4)可写(2)可执行(1)
- mprotect以页为单位,一页为0x1000字节,需要长度对齐,简单来说起始地址必须是0x1000的倍数才能分配成功
exp
1 | from pwn import * |
布栈如下:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 aYoung's Blog!
评论




