Reverse1
查看它是多少位的
64位
然后选择64位的ida
进入后,首先会出现图片式的代码,按空格即可转化
进入ida后,直接查看字符串
看到flag似乎藏在其中
选择其中一个,比如input the flag
进入选择它的函数(黄色的)
再按X,选择OK
之后就可以看到它的汇编语言
其中一段
再按f5,转化伪代码,这里是c语言
我们看到这里
这里有ASCLL的变化,把o换成了0;
再看,如果输入的str1与str2相等,即可得flag,我们就看str2,点击flag2
则只需要把str2中的o换成0即可。
所以flag为{hell0_w0rld}
第二题 Reverse2
先查看它的位数
再打开ida,查看字符串(shift+f12)
任意选择一个,比如this is the right flag
选择黄颜色的,按X,再选中一段汇编代码按f5可得下图
很明显红色部分有改动
查看ASCLL码,知道把i和r改成了1
再看,输入的s2和flag相等才可
所以我们要查看flag
答案由2个部分组成。
7Bh是16进制的ASCLL码,对应的是"{",
再看下部分,"hacking_for_fun},我们还要把其中的i和r换成1
最后得flag={hack1ng_fo1_fun}
第三题 内涵的软件
查看位数
32位,选择32位的ida
打开后仍然先查看字符串
然后看到疑似答案的区域
随便点击一个,比如"那没办法了"(其实那个DBAPP里面的内容很像flag)
选择它的函数,再按X,进入汇编代码后,选择一段,按f5,即可得到它的伪代码,和上面的题是一样的。
我们直接看它的伪代码
分析下图
难道输入V4真的会出现答案吗?
当V4=Y时,会有一个输出,但是这个输出真的是答案吗?
先看打印的东西,点击printf()里面的内容,你会看到打印的是
很明显不是答案。
再看看result;点击sub_40100A(),进去了之后还要点一次才可出现函数
你会发现,它是这样的一个函数
答案也不会是从0加到5亿。
再看看V4=N时,会打印一个asc_425034,点击以看,会输出“那没办法了”
最终也会返回那个从0加到5亿的值。
很明显,这些都不是答案,其实,你只需要对输入框里一输就知道了
但其实答案已经很明显了,
只能是它了
所以flag={49d3c93df25caad81232130f3d2ebfad}。
谢谢大家的观看,我会发布后面的题的。