CTF题解一 逆向defcamp

实验吧题目链接:http://www.shiyanbar.com/ctf/2020

用IDA反编译main函数,可以看到下面代码:

CTF题解一 逆向defcamp_第1张图片

这一部分是在建立无头结点的链表,链表中一共10个元素。每个元素16字节大小,前4个字节存储1到10的序号。从第5个字节开始存储序号值+109。

链表采用前插法,qword_601080始终指向链表的头。
CTF题解一 逆向defcamp_第2张图片

对于输入s,如果sub_40074D返回值为0,则正确。

CTF题解一 逆向defcamp_第3张图片
观察函数sub_40074D,当v6和v9从第0到第5全部相等,返回值为0。

v9从第0到第5分别为:5 2 7 2 5 6

所以最后v6必须也为 5 2 7 2 5 6
CTF题解一 逆向defcamp_第4张图片

观察上面的代码,可以看出v6初始值为0,在while循环结束后被v4赋值。而v4每轮初始值为0,只有当输入的字母与链表中序号值+109相等时,才会被赋值为序号值。

由于每轮循环v4应分别等于5 2 7 2 5 6

所以输入字母的ASCII码应为114 111 116 111 114 115

即rotors

提交flag时注意没有冒号

你可能感兴趣的:(CTF)