[一千道逆向题] 攻防世界1-5题刷题题解(偏动调)

Posted mid2dog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[一千道逆向题] 攻防世界1-5题刷题题解(偏动调)相关的知识,希望对你有一定的参考价值。

前言

立了个flag,刷满一千道逆向。先从攻防世界开始。


0x00 Hello, CTF

查壳

新手区应该没壳,下面不查了。

逻辑很清晰,你可控的输入点在v9,然后把你输入的v9每一个字符以16进制读取存到v10,最后再用v10和v13进行比对。
所以输入

这一串代表的字符就是flag


0x01 insanity

flag与打印出来的内容有关
flag与“Reticulatingsplines,pleasewait…”无关
字符串flag与随机数无关
然后直接字符串里找到了…


0x02 python-trade

是个pyc文件,直接反编译一下

按照他的加密脚本写解密脚本就行


0x03 re1


不是很理解,放od里看看

…本来想在输入点下个断点,没想到flag就在上面了。


0x04 game

一个游戏,满足条件能够跳到关键函数

然后看到 flag is …
说明如果能到这个函数就可以输出flag

这里提供两种不用将算法逆向的思路:
第一种,直接用ida的patch,直接把图里第一个函数地址patch成第二个函数地址


然后就直接输出flag了,这不比直接逆向轻松?

然后我决定再试试用od来直接跳转,锻炼下动调水平

动调可以直接关闭虚拟机的地址随机化aslr,这样可以跟ida里的地址相同,然后随便修改一个call的地址为ida里输出flag的函数的地址即可。

如果不关闭地址随机化的话,这道题也可以自己找,比较好找,因为有关键词

我们只要让他运行到这里就行

但是不能直接跳到这个语句,要跳到函数入口,也就是push ebp的地址0x0044E940

接下来就是运行程序,找可以改call的地方

停在输入的地方,然后随便找个call的地址修改成0044E940

像这样,你无论输入什么都会有flag出来,但是却是一闪而过
所以你可以F8一步步走,这样就能清楚看到flag了

看到熟悉的%s,直接F4运行至此,flag就全出来了

以上是关于[一千道逆向题] 攻防世界1-5题刷题题解(偏动调)的主要内容,如果未能解决你的问题,请参考以下文章

[一千道逆向题] 攻防世界1-5题刷题题解(偏动调)

[一千道逆向题] 攻防世界1-5题刷题题解(偏动调)

助力金九银十!跳槽神器:多家大厂联手整理一千道 Java 面试题手册

攻防世界逆向《maze》

吴丶凡熬夜也要看:一千道Java面试题手册,字很多,你忍着点能看完!

攻防世界1-6题题解和解题心得