btcf_quals_2014——最难的题目

ps: 只是这道题目名叫最难的题目,并不是比赛中最难的题目2333333

逆向文件下载:http://oj.xctf.org.cn/files/re_100.8cd4820cbd1300bda951e694298f73a0

pps: 题目详情可在oj.xctf.org.cn找到,但是给出的flag无法通过,通过看别人的writeup认为是xctf又搭崩了

首先看看题目吧

通过ida就可检测出这是一个pe文件,后缀改为.exe运行一下

结果就是疯狂跳出这个框,怎么点都会再弹出来

2

好吧,拖进OD看看

结果在调试过程中弹出了个不同的东西,然后后面直接调用了exit函数

就退出程序了= =

3

猜测大概有些调试保护的函数吧(后来看别人的writeup的确如此,不过我的OD没有显示出来)

4

搜索字符串,定位到对应函数,发现jnz的跳转语句可以跳过该函数

好办,空格修改jnz为jz继续调试

然后就定位到了bctf这个字符串,发现这个函数在很多个循环里面(难怪会疯狂跳出) 5

为了方便理解,进入ida按f5反编译为c查看

6

发现如下函数

7

对应汇编中如下

8

这么可以猜他这是输出flag啊,那么尝试下 让他输出9

可以看到主函数中四次调用了这个函数,并且传入了四个不同的int

这些int可以理解为包含flag信息的参数

那么函数中的运算不能随便改,不然就会导致输出flag不对

于是把里面调用messageBoxA函数用NOP替换,让程序自己跑起来

这时把断点什么的都关掉,不然每次自己点很麻烦的

最终跑完结果如下
1

嗯,所以flag就是

Th3_H4rd3st_H3r3

×

赞助gif换电脑、吃双皮奶(逃

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,