这是某个夜黑风高的晚上,室友都出去了,就我一人在寝室默默做题 QwQ

vigenere

key:VIGENER?????
p:SECCON{?????????????????????????????????}
c:LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ

然后求密文,密文的 MD5 值已经给出

学长的做法是把 MD5 值发布出去。QAQ

由于我不知道发布出去的姿势,而且后面五位是不知道的,所以只好暴力枚举

#include <iostream>
using namespace std;

char a[30][30];
string d;
char x,y;

int main()
{
    freopen("ans.txt","w",stdout);

    for (int i=0;i<28;i++) { getchar();getchar(); cin>>d;
        for (int o=0;o<28;o++) a[i][o]=d[o];
        getchar();
    }

    string initt="                                           ";
    string key="VIGENER     ";
    string ansss="LMIG\\RPEDOEEWKJIQIWKJWMNDTSR\\TFVUFWYOCBAJBQ";


    for (key[7]='A';key[7]<='Z';key[7]++)
        for (key[8]='A';key[8]<='Z';key[8]++)
            for (key[9]='A';key[9]<='Z';key[9]++)
                for (key[10]='A';key[10]<='Z';key[10]++)
                    for (key[11]='A';key[11]<='Z';key[11]++)
                    {
                        for (int i=0;i<ansss.size();i++)
                        {
                            for (int o=0;o<28;o++) 
                            if (a[o][key[i%12]-'A']==ansss[i]) cout<<(char)(o+'A');
                        }
                        bool flag=1;
                        for (int i=7;i<initt.size()-1;i++) if (initt[i]=='[' || initt[i]=='\\') flag=0;
                        if (initt[initt.size()-1]!='\\') flag=0;
                        initt[6]='{';
                        initt[initt.size()-1]='}';
                        if (flag) cout<<initt<<endl;
                    } 
}

生成了所有可能的 flag,然后用 Python 去算 MD5 值,跟给的值比较

import hashlib

f = open("ans.txt")
line = f.readline()
while line:
    m = hashlib.md5()
    m.update(line)
    psw = m.hexdigest()
    if (psw=='f528a6ab914c1ecf856a1d93103948fe') : print (line)
    m = hashlib.md5()
    m.update(line.lower())
    psw = m.hexdigest()
    if (psw=='f528a6ab914c1ecf856a1d93103948fe') : print (line)
    line = f.readline()
print 'noanswer'

voip

一道流量分析,不过居然不是 TCP 的,是 UDP 的,然后发现里面好像在跟什么对话?

将里面的东西处理一下,发现是一个 .au 的音频文件。

然后听上去,卧槽根本听不清楚

传不上来- -

有兴趣的私我,我给你听听=w=

Anti-Debugging

自己的解法

直接发现,I have a pen. 输进去应该就对了。

不过我做的时候,比赛结束了。。哈?

update(2016.12.15):

别人的解法

Windowsのexe問題。Windows環境があれば、OllyDbgとIDAですぐ解けます。

anti-debugが入る前(0x4013A3あたり)でbreak
eipを復号処理 0x401663に飛ばす
check(0x401737)あたりでbreak
flagはスタックに書いてある
SECCON{check_Ascii85}
ちゃんとやるならパッチをあてるとかですかね。

quote:http://jptomoya.hatenablog.com/entry/2016/12/12/140136

总结

还是不会稍微难的题目。之做出了300+人都能解出的题目。


上山不易,披荆斩棘才能善始;下岭更难,临渊履薄方可令终