今天是练习reverse的题目。
1.open-source打开附件获得一串代码,学过C的我,还是看得懂一点的。
就是根据数组argv的值输出不同的结果。但是,看代码的同时,肯定不能忘记我们的最终目的是为了找到flag,依照之前的题目,肯定要一种方式让隐藏的flag出来,到时只有这一段代码,要怎么操作它呢?先运行一下代码吧。
发现输出一个What?,由代码可知,输出这个结果是argc!=4的情况,但是下面还有一个exit(1)的语句。C语言中,exit(1)表示异常退出,在退出前可以给出一些提示信息,或在调试程序中察看出错原因。
exit是系统调用级别的,是一个函数,它表示了一个进程的结束。 exit是在调用处强行退出程序,运行一次程序就结束。这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关。
总觉得哪里不对,我试着把exit()语句删掉,没用。最终我要得到的是那个key,但是没有输入的值,可能要添加输入。
但是我通过前面的代码知道了一些参数的值,如first=51966;second=25;所以就可以给他们赋值就可以了,但是程序运行不出来,提示我exit()错了,搞了好久,我就删掉了,直接暴力解决。直接运行就得到了一个key。
果然这就是flag,虽然做出来了,但是我还是看了下别人怎么写的,他们是用的python脚本什么的,我觉得我的工具不对,所以一开始直接运行出问题了,而且这一题直接给出了源代码,省去了逆向的过程,感觉自己有一点投机取巧,改掉了它的代码。
相关文章: