查看: 2043|回复: 0

[Reverse] 看雪CTF2019晋级赛Q1第一题流浪者

  [复制链接]
发表于 2019-3-27 15:34:38 | 显示全部楼层 |阅读模式
一直在忙,晚上抽空打开题目,看到大佬们300多秒就解出来了,我只能写个详细点的wp来混存在感了。
首先查壳,VC程序,没壳
98005caf2434cc120.png
直接导入IDA定位到关键算法部分
368405caf24186761f.png
通过F5可以看到伪C代码,主要讲的是我们输入的假码如果在0-9之间,就把对应的ASCII减0x30,假码如果在a-z之间,就把对应的ASCII0x57,假码如果在A-Z之间,就把对应的ASCII0x1D
704015caf244bb7dad.png

大佬看到这里就可以关掉IDA开始写脚本了,但是我还是决定用OD来找找捷径
首先载入OD定位到关键点

004018B5处的GetWindowsTextA函数获取输入
00401908这里就开始进行算法变换
130075caf24553e3d8.png

出了大循环之后,004019C3这里是关键比较CALL
710635caf245dcd52c.png

CALL看看
545165caf2465be5c3.png

我们看到了字符串比较函数,我们在字符串比较函数下个CC断点,然后我们就可以通过穷举字母和数字来手动建立密码的对应关系
774845caf246e0a38d.png

我们先观察和假码比较的那个字符串KanXueCTF2019JustForhappy
这个字符串包含了字母大写小写和数字
接下来就可以缩小举例的范围(排除某些符号)
0123456789对应abcdefghiAa
11455caf247ba4e3a.png

abcdefghijklmnopqrstuvwxyz对应BCDEFGHIJKLMNjklmn01234567
608715caf2487bc381.png

ABCDEFGHIJKLMNOPQRSTUVWXYZ对应89opqrstuvwxyzOPQRSTUVWXYZ
385755caf248e119a1.png

最后得出关系表
abcdefghiAa对应0123456789
BCDEFGHIJKLMNjklmn01234567对应abcdefghijklmnopqrstuvwxyz
89opqrstuvwxyzOPQRSTUVWXYZ对应ABCDEFGHIJKLMNOPQRSTUVWXYZ
通过手动计算可以得出:
KanXueCTF2019JustForhappy对应j0rXI4bTeustBiIGHeCF70DDM
273995caf249747576.png
通过验证,flag正确
80825caf249f4c565.png

table = "abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ"
s = "KanXueCTF2019JustForhappy"
ff = []
for i in s:
    ff.append(table.index(i))
 
flag = ""
for i in ff:
    if 0 <= i <= 9:
        flag += chr(i + 48)
    elif 9 < i <= 35:
        flag += chr(i + 87)
    elif i > 36:
        flag += chr(i + 29)
 
print flag

kxctf2019cm1.rar (4.79 KB, 下载次数: 0)
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表