栈迁移+沙箱逃逸orw的题目
程序保护只开了NX。
开了沙箱只允许open、read、write、exit四种系统调用,铁打的orw题。由于开了NX但是又不给mprotect,只能考虑ROP形式的orw链,还是比较少见的。
上面的func函数是程序主要逻辑,buf可以溢出0x10字节,第一次泄露libc地址,拿到相应的gadget为后续攻击做准备。第二次迁移栈到bss段上,同时借助程序自身末尾的leave ret,我们可以直接把返回地址覆盖成main中第二次read的地址,相当于又有一次读入数据的机会,这次读入ROP链子到bss段上,布置好相应的数据。
ROP链末尾再次栈迁移到ROP链处执行ROP,orw读取flag输出。
值得注意的是打开文件成功后的文件描述符自增1,默认为3
最终getshell的payload链子:
最终攻击脚本:
运行脚本得到flag
By Del0n1x
Keyboard
CIMA中国官方 2024-10-12
IT科技菜鸡 2024-10-12
傻大个科技 2024-10-12
阿甘秒写 2024-10-12