当前位置:   article > 正文

2021 第四届 浙江省大学生网络与信息安全竞赛技能赛 决赛 Writeup,5题_这时候检验你是真的路飞粉丝吗,其中flag格式为dasctf{}

这时候检验你是真的路飞粉丝吗,其中flag格式为dasctf{}

1、Misc:asoul_lover

题目表述:

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

做法:

  • 结合描述,萌娘百科一下
    在这里插入图片描述
  • 得到压缩包密码为 向晚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='')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

做法:

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

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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 得到flag
    在这里插入图片描述

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/900732
推荐阅读
相关标签
  

闽ICP备14008679号