2021 第四届 浙江省大学生网络与信息安全竞赛技能赛 决赛 Writeup,5题

Posted 小哈里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 第四届 浙江省大学生网络与信息安全竞赛技能赛 决赛 Writeup,5题相关的知识,希望对你有一定的参考价值。

文章目录

1、Misc:asoul_lover

题目表述:

  • 最近我旁边的灏妹天天上班第一句就是“Avaava”,还说要当安恒第一顶碗人。在他桌面上似乎发现了一个好康的压缩文件,想想他之前用过自己的名字+生日来做压缩密码,这把应该也能破解出来咯?对咯,他的压缩软件支持中文密码。flag的格式为 DASCTFxxxxxx,提交时只需要提交括号内的字符串。

做法:

  • 结合描述,萌娘百科一下
  • 得到压缩包密码为 向晚0612
    解压即可获得flag。
  • PS:如果一种解压软件挂了可以换另一种试试(

2、Misc:site_log

题目描述:

  • 给了一个压缩包,有一个.log和flag.zip。
  • 从log入手,打开后发现有很多的chr字符,将之转换后得到一堆shell命令。
    ls
    cd /
    ls
    cat flag
    zip
    zip -rP hehehe233_Igotroot! flag.zip
    rm flag
    echo “I AM ROOT”.
  • 不难发现压缩包密码为hehehe233_Igotroot!,解压即可获得flag。

3、RE:最简单的逆向

题目描述:

  • 给了个文件,丢到IDA打开后F5。
    发现了一个for循环,0-39,给str[i]都加上50去判断, 如果都等于enc就成立。
  • 找一下enc数组中的值。
    0x76, 0x73, 0x85, 0x75, 0x86, 0x78, 0xAD, 0x6B, 0x97, 0x68, 0x98,0x67, 0x64, 0x64,0x62, 0x97, 0x68, 0x98, 0x6B,0x6B, 0x96,0x67, 0x62, 0x69, 0x95, 0x96, 0x65, 0x96, 0x6A, 0x69,0x69,0x65, 0x66, 0x97, 0x68, 0x98, 0x6A, 0x95, 0x68, 0xAF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  • 写个代码每个字符减50合成一下,即可获得flag
    #include<bits/stdc++.h>
    using namespace std;
    unsigned char enc[] = 
      0x76, 0x73, 0x85, 0x75, 0x86, 0x78, 0xAD, 0x6B, 0x97, 0x68, 
      0x98, 0x67, 0x64, 0x64, 0x62, 0x97, 0x68, 0x98, 0x6B, 0x6B, 
      0x96, 0x67, 0x62, 0x69, 0x95, 0x96, 0x65, 0x96, 0x6A, 0x69, 
      0x69, 0x65, 0x66, 0x97, 0x68, 0x98, 0x6A, 0x95, 0x68, 0xAF, 
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
      0x00, 0x00, 0x00, 0x00
    ;
    int main()
        for (int i = 0; i <= 39; i++)
            enc[i]-=50;
        
        printf("%s",enc);
        
    
    
    // Py : for i in enc: print(chr(int(i)-50),end='')
    

4、Web:远古特性

题目描述:

  • 网站上有一个php文件。
    <?php
    // Present from glzjin :)
    highlight_file(__FILE__);
    $file = $_GET['file'];
    if(preg_match('/^hint\\/hint.txt$/m', $file)) 
        echo file_get_contents($file);
     else 
        echo "Try again!";
     Try again!
    

做法:

  • php代码审计,可以发现传入的payload中 ?file=xxxxx中,xxxx根据正则表达式匹配必须包含hint/hint.txt才能进入file_get_contents这行。
  • 再注意到正则表达式中有/m,可以进行多行匹配。我们用换行符%0A绕过正则行首行尾字符匹配, 然后加上目录穿越读取文件。
  • 按照如下格式,不断添加…/寻找读取flag文件即可
    ?file=hint/hint.txt%0a../../../../../../flag
    

5、Crypto:decode_and_decode

题目描述

  • 下载decode_and_decode的附件22.txt得到一堆base密文。

做法:

  • 用工具尝试进行base循环解密即可。

    import base64
    with open(r'decode_and_decode的附件22.txt', 'r', encoding='utf-8') as f:
        for a in f:
            while 1:
                try:
                    a = base64.b64decode(a).decode("utf-8")
                except:
                    pass
                try:
                    a = base64.b32decode(a).decode("utf-8")
                except:
                    pass
                try:
                    a = base64.b16decode(a).decode('utf-8')
                except:
                    pass
    
                if "" in a:
                    print(a)
    
                    break
    
    
  • 得到flag

其他可做题:
web:just login,safepop
re:RE人三项,preprocess
pwn:pwn1

以上是关于2021 第四届 浙江省大学生网络与信息安全竞赛技能赛 决赛 Writeup,5题的主要内容,如果未能解决你的问题,请参考以下文章