查看: 542|回复: 9

[Reverse] re你快乐吗WP

[复制链接]

8

主题

29

帖子

2

精华

中级会员

Rank: 8Rank: 8

学币
627
荣耀
1
rank
1283
违规
0
发表于 2019-7-24 16:54:41 | 显示全部楼层 |阅读模式
本帖最后由 Lily 于 2019-8-4 13:52 编辑

1、查壳,无壳,直接打开后什么也没有显示,只能输入
1.png
2、IDA开撸,shift+F12查找字符串,发现you win,双击后进入rdata段(资源数据段),点击you win左边的str,按X查看调用,双击转到对应函数,按F5查看伪代码
3、在开头发现了OllyDBG,x64dbg等字符串,估计是反调试,不用管它,往下看,分析如图,可知我们需要输入26位整数
2.png
4、下面接着是switch,但是只有1234这四个分支,说明我们需要输入的整数只能是1234这四个数,但是对应的各种++--看不明白,暂时放一边,往下看
5、程序在最后用*(_DWORD )&asc_140003350这个数组里面的数值去比较1和99来判断胜利失败,胜利之后将输入的1234转化为ZF#R输出为flag,我们双击进入(_DWORD *)&asc_140003350,但是并没有发现99,而且我这个IDA给出的判断是这个数组是char类型的,只有两个元素???由此判断此处IDA的反汇编代码不正确,需要自己修改
6、点击asc_140003350按D键将这个数组变成dword类型后,右键选择Array,在Array size里面强大的IDA给出了数组元素个数的所有可能性,我们选择最大值57,之后按H键将16进制转化为10进制,我们终于看到了99出现了,但是数组大小到底是多少还是不能确定,只能靠猜测,或者在写脚本时候把者57个数值全放到数组里,能出flag就行
3.png 4.png
7、但是26位由1234组成的数一共有4^26=4503599627370496个可能性,python最多支持20个循环嵌套,所以我采用C++爆破。。。我估计神威太湖之光能秒解,反正我用笔记本跑了10分钟没出结果就放弃了
8、那么到底该怎么做?大佬告诉我这是一个7*7的迷宫题,我恍然大悟,如图
5.png
将数组里面从8到63(16进制的99)按7*7排列,只要从8走到63就成了,1234对应上下左右,分析如图
222.png 333.png
9、输入2 4 4 1 4 4 4 2 2 2 2 3 3 1 3 3 3 2 2 4 4 2 4 4 4 4
111.png
        flag{#FFRFFF####ZZRZZZ##FF#FFFF}
10、这道题我肝了近6个小时,走了好多弯路,不过成功的喜悦和获得的经验让我感觉值回票价,感谢学逆向论坛!

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
发表于 2019-8-3 19:54:05 | 显示全部楼层
感谢支持!题目是别人的,但是学到的都是自己的!
善莫大焉-2019
发表于 2019-8-4 00:40:16 | 显示全部楼层
26位由1234组成的数,应该是4^26=4503599627370496个可能性吧。还是大佬告知是迷宫题是关键啊......

点评

emmm我的确写反了,已经改正  详情 回复 发表于 2019-8-4 13:52
:(){:|:&};:

8

主题

29

帖子

2

精华

中级会员

Rank: 8Rank: 8

学币
627
荣耀
1
rank
1283
违规
0
 楼主| 发表于 2019-8-4 13:52:21 | 显示全部楼层
Lazzaro 发表于 2019-8-4 00:40
26位由1234组成的数,应该是4^26=4503599627370496个可能性吧。还是大佬告知是迷宫题是关键啊......{:6_129 ...

emmm我的确写反了,已经改正
发表于 2019-8-4 16:52:42 | 显示全部楼层
话说那个7*7迷宫是怎么出来的,没太懂= =

点评

ida能确定数组起始,但是到哪里结束得自己判断,根据最后you win那个是否等于99(0x63)的判断,可以得出到99结束,从数组开始的8到结束的99刚好是49个数字=7*7,结合上下左右移动的7可以看出来,虽然也不那么容易想  详情 回复 发表于 2019-8-4 22:31
:(){:|:&};:

8

主题

29

帖子

2

精华

中级会员

Rank: 8Rank: 8

学币
627
荣耀
1
rank
1283
违规
0
 楼主| 发表于 2019-8-4 22:31:25 | 显示全部楼层
Lazzaro 发表于 2019-8-4 16:52
话说那个7*7迷宫是怎么出来的,没太懂= =

ida能确定数组起始,但是到哪里结束得自己判断,根据最后you win那个是否等于99(0x63)的判断,可以得出到99结束,从数组开始的8到结束的99刚好是49个数字=7*7,结合上下左右移动的7可以看出来,虽然也不那么容易想到。。。其实还是靠经验和脑洞

点评

确实太脑洞了,得好好研究一下。。  详情 回复 发表于 2019-8-5 13:52
发表于 2019-8-5 13:52:49 | 显示全部楼层
Lily 发表于 2019-8-4 22:31
ida能确定数组起始,但是到哪里结束得自己判断,根据最后you win那个是否等于99(0x63)的判断,可以得出 ...

确实太脑洞了,得好好研究一下。。
:(){:|:&};:
发表于 2019-8-5 15:15:48 | 显示全部楼层
Lazzaro 发表于 2019-8-5 13:52
确实太脑洞了,得好好研究一下。。

太强了~
善莫大焉-2019

8

主题

26

帖子

0

精华

初级会员

Rank: 4

学币
60
荣耀
0
rank
0
违规
0

    发表于 2019-9-10 16:50:33 | 显示全部楼层
    tql~tql~tql
    回复 打印

    使用道具 举报

    8

    主题

    26

    帖子

    0

    精华

    初级会员

    Rank: 4

    学币
    60
    荣耀
    0
    rank
    0
    违规
    0

      发表于 2019-9-10 17:18:07 | 显示全部楼层
      写的很详细
      关闭

      论坛公告上一条 /2 下一条

      快速回复 返回顶部 返回列表