XMAN2017冬 万箭穿心 writeup
翻记录发现这题分类是 mobile,没人做出来过,《万箭穿心》writeup献给各位老铁。
文件链接:https://github.com/LeadroyaL/attachment_repo/tree/master/xman_2017/
一、万箭穿心
不知道这个和mobile 主题有什么关系,只是一个 arm 的可执行文件,可以在手机上运行。
官方的 hint 是题目中有2个二维数组,表示2组坐标,共17个。
上来先读了长度18以内的输入,观察一下是有结构体的,经过多次测试,结构体大小给4个 int32刚好,前2个 int32表示 x方向的int64,后2个int32表示y方向的 int64。我们不把 int64标记出来是因为 F5以后实在太丑了。中间很多函数都是以点为单位的,而且发现 startPoint 的y 全都是0x80,currentPoint的 x 全都是0。 输入是按照 char 去挨个处理的,每个 char 与startPoints[i]
、targetPoints[i]
强相关,currentChar 表示的点的 x 为零,y 的高位为0,低位为 currentChar,所以涉及到3个点。 稍微猜一下,三点共线,但不一定有整数解,先试试吧。
(ox24, 0x80),(0x20,0x68),(0,??),求得??=-88,取个相反数是88,对应 ASCII 的"X"。嗯,很合理。 写个 python 把其他的也算一下吧
1 | In [24]: for i in range(len(setA)/2): |
噗,flag 就在这啊。 不知道为什么当初没人做出来,可能头铁去逆向了吧。