看雪.TSRC 2017CTF秋季赛
看雪的ctf 以逆向和pwn为主,持续更新,希望能跟下去把
第一题 Helllo-CTF
明文,不详解
第二题 ctf2017_Fpc
讲道理第二题出得很没有道理,
输入后的两个call 并没有什么用 干扰视线
在text段有一段shellcode,构造9876543210ab11A
的输入可以跳转到该shellcode上,这是一段很花很花的东西
跳转不看,我们将有用的汇编取出来
1 |
|
然后可以获取三个算式
我们使用z3求解
1 | $ cat solve.py |
flag: Just0for0fun11A
第三题 crackMe
运行程序,能看到是有gui的,查找import
能找到GetDlgItemTextA
这个是一个处理窗口消息的函数
我们通过交叉引用,可以找到程序的关键流程
基本的流程就是:读取用户收入信息。然后做两次base64编码,再用国密算法SM3计算一个hash。计算完hash之后转换成16进制。然后将Hash值的后64位和用户输入进行比较。
然后程序的下一个流程 会到一个迷宫游戏
能看到迷宫地图
1 | 0 1 1 1 1 1 1 1 1 0 |
其中的0为可行路径。题目中,替换后的输入字符为q z分别表示向上一行和向下一行;p l分别表示向左一格和向右一格。
[3,8]为死路。若输入为\x20,则结束,返回True;若走错,则返回False,验证失败。
这里并没有对路径完成量进行约束,也产生了多解可能。这里,我们为简化,可以直接让替换后的第一个字符为\x20。
总是所述,正确的答案行走路线是:
zlzllllzzzppqppzzzlllzlllzllqqpqpqqqqqllq
然后根据上面分析到的结果进行逆运算。它的摩尔斯码如下:
1 | --.. .-.. --.. .-.. .-.. .-.. .-.. --.. --.. --.. .--. .--. --.- .--. .--. --.. --.. --.. .-.. .-.. .-.. --.. .-.. .-.. .-.. --.. .-.. .-.. --.- --.- .--. --.- .--. --.- --.- --.- --.- --.- .-.. .-.. --.-/ |
将上述结果进行2次base64编码
最后在末尾附加hash值(就是SM3加密之后的值)就是答案
第四题 club_pwn
double free
我的简单分析 https://bbs.pediy.com/thread-222421.htm
exp
1 | #!/usr/bin/env python |