栈溢出之pwn200解题步骤
主要涉及到Ret2libc–修改返回地址,让其指向内存中已有的某个函数,以及初步构造rop( Return Oriented Programming )
思路分析:有read函数,变量buf大小为0x68,read可写入0x100,可知有栈溢出。题目中只给出system函数,没有给出"/bin/sh",所以要自己通过read函数写入"/bin/sh",然后返回调用system函数。
0x01 查看题目信息,可知文件是32位
0x02 checksec 检查可执行文件属性
gdb pwn200
checksec
可以看到pwn200没有开启各种保护,RELRO为” Partial”,对GOT表具有写权限。
补充一下checksec相关知识:
1.canary,栈保护功能
2.fortify,判断程序哪些buffer会存在可能的溢出
3.nx,将数据所在内存页标识为不可执行
4.pie(aslr),内存地址随机化机制
5.relro,设置符号重定向表格为只读或在程序启动时就解析并绑定所有动态符号
具体的可看下面链接
https://blog.csdn.net/Kelly_Young/article/details/82791248)