BUUCTF中内涵的软件

0x00 前言

又是一周,学了一周的汇编,到今天真的是一点儿都看不进去了,于是又做做题,找找自信。

0x01 正题

题目中说这是一道内涵的题,所以就先运行一下看一眼思路。

 

 

 值得一提的是不管回答Y还是N,程序都最终会一闪而过,所以截图这个事情还是挺考验手速的。既然正常运行看不出来,那就只好用PE看一下有没有壳和软件的基础信息了。

从PE中看到,32位软件,用C++编写的。那么自然要用IDA32打开啦。

在流程中可以看到jmp _main_0,程序跳转到main_0中,双击点进去看一下。

 

 结合前面程序运行的流程可以推测,该软件中存在输入(scanf)和输出(printf),所以F5反一下汇编。

在伪代码中可以看到有if判断语句,先分析一下,v4 == 89,输出a0d;在下面的if判断中,v4==78时,输出&byte_425034,否则输出&byte_42501C。通过强大的'R'对89和78进行翻译,89为‘Y’,78为‘N’ 。然后往前看,v5长的很像flag,因此就提交一下试试,果然v5是答案。DBAPP{49d3c93df25caad81232130f3d2ebfad}

0x03 总结

但是,本着学习的态度,打破砂锅问到底,还是要继续分析的。

在while循环中,v6 >= 0且v6等于5,联想前面的软件“距答案出现还有x秒,请耐心等待!”,后面本该出现的“这里应该有答案的balabala的那一串,应该是有一个变量,然后和v5的值进行比较,这个变量就是软件前面提示的程序员没有填写的变量了。由此可以确定,v5的值就是flag。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值