2019KCTF 晋级赛Q1 | 第一题点评及解题思路
历时14天的看雪CTF晋级赛Q1已经结束,名次也于昨日公布:英雄榜 | 2019 看雪CTF 晋级赛Q1 排行榜出炉!
相信很多小伙伴对比赛中出现的题目想有一个更深入的了解与探讨,那么接下来的几天,我们将对这些题目进行一些点评与破解思路的讨论,也希望有更多的人在公众号下方,或者论坛进行一些互动与交流。
首先是第一题“流浪者”,出题战队是Vagaeth,这道题目围观人数达到了5499人,这个只有一人组成的战队所出的题目,让大家产生了浓厚的兴趣。
看雪ID:Vagaeth
https://bbs.pediy.com/user-722186.htm
看雪CTF评委 crownless 点评
《流浪者》此题总体来说比较简单,程序逻辑不复杂,也没有加壳保护。可以通过使用IDA的查看所有字符串的功能快速定位关键字符串,再依此找到关键程序逻辑,此题就能迎刃而解。
题目设计思路
根据密文KanXueCTF2019JustForhappy 每个字符在其字典abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ里的下标 和明文 W4p2Cq4TCj0rXI4bH5ustz 在其字典0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ里面的下标相同来进行算法验证破解先求出密文在其字典里的下标 然后根据下标在明文的字典里取字符即可得到答案:
=>j0rXI4bTeustBiIGHeCF70DDM
题目破解思路
这道题目破解思路由看雪ID:深天深天 提供
1. 首先先双击运行程序看看~
可以获得相关字符串
2. 然后丢入ida里(32位)
通过查找字符串可以看到pass,双击进去,一步一步可以找到源码,
3. 用F5大法
可以看到MessageBox,这里是输入内容成功返回的地方,按x返回上一步看看是谁调用了它~
然后得到以下关键,可以知道代码段,对输入内容做变形处理后,如果字符串等于KanXueCTF2019JustForhappy,就可成功pass
4. 简单来说,变形就是一个替换算法:
abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
上下一一对应,这样只要根据"KanXueCTF2019JustForhappy"反推输入即可。
5. 脚本如下
#!/usr/bin/python
str1='abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ'
str2='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
enc='KanXueCTF2019JustForhappy'
flag=""
list1=list(str1)
list2=list(str2)
list3=list(enc)
i = 0
while i < len(list3):
flag+=list2[list1.index(list3[i])]
i+=1
print(flag)
#j0rXI4bTeustBiIGHeCF70DDM
明天我们将对题目“变形金钢”进行分析与讨论,感兴趣的小伙伴记得不要错过,准时守住我们的公众号更新哦~
- End -
推荐图书
戳
往期文章一览
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com