实验吧题目链接:http://www.shiyanbar.com/ctf/2020
用IDA反编译main函数,可以看到下面代码:
这一部分是在建立无头结点的链表,链表中一共10个元素。每个元素16字节大小,前4个字节存储1到10的序号。从第5个字节开始存储序号值+109。
链表采用前插法,qword_601080始终指向链表的头。
对于输入s,如果sub_40074D返回值为0,则正确。
观察函数sub_40074D,当v6和v9从第0到第5全部相等,返回值为0。
v9从第0到第5分别为:5 2 7 2 5 6
所以最后v6必须也为 5 2 7 2 5 6
观察上面的代码,可以看出v6初始值为0,在while循环结束后被v4赋值。而v4每轮初始值为0,只有当输入的字母与链表中序号值+109相等时,才会被赋值为序号值。
由于每轮循环v4应分别等于5 2 7 2 5 6
扫描二维码关注公众号,回复:
2256872 查看本文章
所以输入字母的ASCII码应为114 111 116 111 114 115
即rotors
提交flag时注意没有冒号