2020网鼎杯青龙组部分wp

 · 2020-5-10  ·次阅读


第一次参加网鼎杯,作为一个萌新,这次我们队只做出来了两道题,全程都在解哪个汉信码,最后也没解出来,我太菜了,555…

misc签到

misc签到题给的是个web容器,打开链接

QQ截图20200510210516

根据上方战队名选择战队图片,有三次错误机会,猜的时间是十秒

当连续猜对15次之后需要输入战队token

QQ截图20200510210711

输入token后在控制台找到flag

QQ截图20200510210731

crypto boom

下载后是个boom.exe 放在cmd中运行

QQ截图20200510211622

根据提示,解一次md5,输入结果

QQ截图20200510211814

然后解三元一次方程

QQ截图20200510212119

再解出x后得到flag(由于不会解,可以直接爆破得到x)

QQ截图20200510212054

crypto you raise me up

下载附件后解压是个py脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Crypto.Util.number import *
import random

n = 2 ** 512
m = random.randint(2, n-1) | 1
c = pow(m, bytes_to_long(flag), n)
print 'm = ' + str(m)
print 'c = ' + str(c)

# m = 391190709124527428959489662565274039318305952172936859403855079581402770986890308469084735451207885386318986881041563704825943945069343345307381099559075
# c = 66658513942032142458567894507236586325208167916217967759097668952330002340

可以sage工具的discrete_log解

QQ截图20200510215003

discrete_log(mod(c,n),mod(m,n))得56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757

QQ图片20200511085512

然后用libnum模块解n2s

import libnum
flag = 56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757
print (libnum.n2s(flag))

得到flag

misc 虚幻二

今天差不多全程都在解这个题,实在是不知道怎么拼出汉信码

下载完附件后用Stegsolve分析,保存green,red和blue三个图层

green

red

blue

看不清可以放大处理一下

其中red和blue都是31 * 10的排列 green是31 * 11的排列方式,那么从green开始,按照green、blue、red循环的方式,每次用一行进行拼接,得到一个31 * 31的图像 然后需要将左上角7 * 7的方块旋转180°,再将整个图像逆时针旋转90° ,旋转之后图片上方有个7 * 10大小的空白区域,就是hint中所说的暴力恢复的地方

QQ截图20200510214431

恢复之后如下图

QQ截图20200510214441

在线扫码得到flag

扫码地址:http://www.efittech.com/hxdec.html

赛后还听说有的战队是直接爬了解码网站,把其他队伍上传的汉信码都爬了下来…emm

我研究了下确实是可行的,于是在@anweilx师傅的指导下也写了批量爬取的脚本在这里贴出来

#coding:utf–8
import requests
for m in range (0,61):
#取0分到60分
    for s in range (0,61):
    #取0秒到60秒
        url="http://www.efittech.com/upload/pics/pic_2020051013" + "%02d%02d"%(m ,s )+".jpg"
        #2020051013是时间格式13是13点
        获取=requests.get(url)#获取网络请求信息
        #获取网络图片二进制流
        流=获取.content
        #将二进制流保存到图片文件中
        if b"\xff\xd8" in 流:
        #判断该图片是否存在
            file = open("./汉信码13/" + "%02d%02d"%(m ,s ) +".jpg","wb")
            #将图片命名为分钟+秒数.jpg
            file.write(流)
            file.close()

第一次写,写的不好师傅们轻点打

QQ图片20200511085611