2022浙江省大学生信息安全竞赛技能赛初赛Writeup


前言:misc浅浅ak了一下,misc2一血misc3二血,最高冲上了第5,不过后来还是嘎嘎掉到第9,crypto和pwn一道没出真的太菜了(
希望周末决赛能好好加油!

misc

misc1-好怪哦

拖到010观察得到是逆置的zip压缩包,简单写个脚本倒一下

在这里插入图片描述

with open('fuck.zip','rb') as f:
    hex_list = ("{:02X}".format(int(c)) for c in f.read())   # 定义变量接受文件内容
    buflist = list(hex_list)  # 用列表保存信息,方便后续操作
    list1=buflist[::-1]
    flag=''
    for i in list1:
        flag+=i
    print(flag)

在这里插入图片描述

解开后得到一个缺少文件头的png,补上png文件头
在这里插入图片描述

在这里插入图片描述

提示CRC校验错误,修改宽高后得到flag

在这里插入图片描述

misc2-神奇的棋盘

打开得到一副adfgvx加密棋盘

观察txt数据只有1-5,猜测是数字字母坐标转换,用notepad批量操作一下
在这里插入图片描述

在这里插入图片描述

得到

AGAXXDAGGVGGVDVADAVXDGADVGDVAADDDDFXAFAFDGDVXXDGGDGGDXDDFDDXVGXADGVDFXVVAADDXDXXADDVGGGXGXXXXGXXGGXGDVVVGGGAGAAAAGAAGGAGDDDAGAGGGAGGAGAGAAAVAAAXGXGGGXGGXGXGXXXV

直接解adfgev发现出不来

后发现棋盘存在lsb隐写

在这里插入图片描述

base32

在这里插入图片描述

得到一串key:Yusayyds

这里卡了很久,因为断网没有办法找网站解带key的adfgvx
但队友很给力,在CaptfEncoder里找到带key的adfgvx解密,直接解得到flag

在这里插入图片描述

在这里插入图片描述

misc3-segmentFlow

在这里插入图片描述

观察压缩包数据,前7个小文件只有4字节,尝试使用crc爆破文件内容

import string
import binascii
def Crack_4B(crc_list):
    print('-------------Start Crack CRC 4B-------------')
    #crc_list = [0xc0a3a573, 0x3cb6ab1c, 0x85bb0ad4, 0xf4fde00b]#文件的CRC32值列表,注意顺序
    comment = ''
    chars = string.printable
    flag = 0 

    for crc_value in crc_list:
        for char1 in chars:
            for char2 in chars:
                for char3 in chars:
                    for char4 in chars:
                        res_char = char1 + char2 + char3 + char4#获取遍历的任意4Byte字符
                        char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值
                        calc_crc = char_crc & 0xffffffff#将遍历的字符的CRC32值与0xffffffff进行与运算
                        if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配
                            print('[+] {}: {}'.format(hex(crc_value),res_char))
                            comment += res_char
                            flag = 1
                            break
                    if flag == 1:
                        break
                if flag == 1:
                        break
            if flag == 1:
                        break
        flag = 0
              
    print('-----------CRC Crack Completed-----------')
    print('Result: {}'.format(comment))

crc_list = [0xce70d424,0xc3f17511,0xf90c8a70,0xf8ab2771,0xc0ce8ee6,0xb2a6cde9,0x8637fa85,0x62f8f1a9]
Crack_4B(crc_list)

得到压缩包密码:gZinflAte_BasE64

在这里插入图片描述

解开后观察流量包数据,发现有大量的base64字段,再根据压缩包密码猜测肯定是有用的,直接tshark拉出来全部数据

tshark -r segmentFlow.pcapng -T fields -e urlencoded-form.value | sed '/^\s*$/d' > 1.txt

发现数据之间用逗号隔开,将其全部替换为换行

在这里插入图片描述

在这里插入图片描述

发现大量的散落的zip数据,手动全部提取出来,解开得到flag

在这里插入图片描述

web

web1

真·签到题,呆瓜了一直没搞出来,结束前一分钟搞出来了,来不及补wp了(
后来想复现平台关了,所以没法贴图,简单描述一下吧

御剑扫出robots,一路跟进进去,最后一个页面f12获得hint,根据描述直接get传参即可

web2-nisc_学校门户网站

浏览题目,看到默认密码的规则

在这里插入图片描述

发现有注册界面,尝试注册,输入默认密码作为自己的密码

在这里插入图片描述

注册成功后登录网站,直接获得flag

在这里插入图片描述

在这里插入图片描述

web3-吃豆人

在这里插入图片描述

查看题目,是一个网页小游戏,用开发者工具打开查看js实例。

在这里插入图片描述

看到连接index.js,点击进入分析

在这里插入图片描述

index.js最后看到一串base64的字符,尝试解密,获得flag。

在这里插入图片描述

DASCTF{f235b02382a223fda4ce2ec62148d94c}

re

re1-ManyCheck

首先尝试脱壳,发现没有壳

运行程序,查看程序功能和显示的字符串

在这里插入图片描述

使用ida反编译查找对应字符串

在这里插入图片描述

跳转到对应的位置,查看程序逻辑

在这里插入图片描述

发现需要让第一个输入的字符等于77,然后再算出后面两个算术题。

在这里插入图片描述

成功进入第三关,程序是右移,我们需要左移获得flag

d = 1718896489
bin_d = '0'+str(bin(d)[2:])
temp = bin_d[16:]+bin_d[:16]
print(int(temp,2))
#1198089844

输入答案获得flag

在这里插入图片描述

DASCTF{M71_Gift_08L}


个人拙见,各位师傅如果有好的解法可以交流一下
有需要题目备份的可以dd

猜你喜欢

转载自blog.csdn.net/jyttttttt/article/details/126926325