第一次参加网鼎杯,作为一个萌新,这次我们队只做出来了两道题,全程都在解哪个汉信码,最后也没解出来,我太菜了,555…
misc签到
misc签到题给的是个web容器,打开链接
根据上方战队名选择战队图片,有三次错误机会,猜的时间是十秒
当连续猜对15次之后需要输入战队token
输入token后在控制台找到flag
crypto boom
下载后是个boom.exe 放在cmd中运行
根据提示,解一次md5,输入结果
然后解三元一次方程
再解出x后得到flag(由于不会解,可以直接爆破得到x)
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解
discrete_log(mod(c,n),mod(m,n))得56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757
然后用libnum模块解n2s
import libnum
flag = 56006392793405651552924479293096841126763872290794186417054288110043102953612574215902230811593957757
print (libnum.n2s(flag))
得到flag
misc 虚幻二
今天差不多全程都在解这个题,实在是不知道怎么拼出汉信码
下载完附件后用Stegsolve分析,保存green,red和blue三个图层
看不清可以放大处理一下
其中red和blue都是31 * 10的排列 green是31 * 11的排列方式,那么从green开始,按照green、blue、red循环的方式,每次用一行进行拼接,得到一个31 * 31的图像 然后需要将左上角7 * 7的方块旋转180°,再将整个图像逆时针旋转90° ,旋转之后图片上方有个7 * 10大小的空白区域,就是hint中所说的暴力恢复的地方
恢复之后如下图
在线扫码得到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()
第一次写,写的不好师傅们轻点打