CTFshow Reverse 数学不及格 wp
1.elf文件使用IDA反汇编
main函数,主要逻辑写在注释里,要算出除程序名之外的4个参数
2.根据伪代码分析数据
前三个check相加,有
(v9-v10)+(v9-v11)+(v9-v12)=3*v9-(v10+v11+v12)=0x233F0E151C+0x1B45F81A32+0x244C071725=0x62d10d4673
而check4
v4+v10+v11+v12=0x13A31412F8C
两个等式相加可得,其中v9是斐波那契数列第v4左右项的值,v4是项数
3*v9+v4=0x62d10d4673+0x13A31412F8C=0x19d024e75ff
3*v9+v4的和除以3,可以大概知道v9的值
print((0x233F0E151C+0x1B45F81A32+0x244C071725+0x13A31412F8C)/3)
值为591286729898
找一个在线计算斐波那契数列的网站,找到一个非常接近上面算出来的v9的大概值的一个数
于是v9=591286729879,v4=0x19d024e75ff-3*v9=58
再算出4个输入的参数为
v9=591286729879 v4=58 print(hex(v9-0x233F0E151C)) print(hex(v9-0x1B45F81A32)) print(hex(v9-0x244C071725)) print(hex(v4+0x6543)) #0x666c61677bL #0x6e65776265L #0x655f686572L #0x657d
3.验证并转格式,得到flag
验证一下 666c61677b 6e65776265 655f686572 657d,验证成功
最终转成字符串,得到flag{newbee_here}
from Crypto.Util.number import long_to_bytes print(long_to_bytes(0x666c61677b6e65776265655f686572657d))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】