当前位置:网站首页>VNCTF2021 部分题目复现

VNCTF2021 部分题目复现

2022-08-09 08:33:00 z.volcano

Web

[VNCTF 2021]Ez_game

很魔性的一个小游戏,查看源码看到三个js文件,主要审game.js
在这里插入图片描述
我的想法是在控制台执行代码,改人物的参数,暴力通关

看到如下代码,很明显是人物的初始数值,从上到下分别对应血量、血量上限、小回旋镖数量、大回旋镖数量、金币数量
如下
在控制台小改一波,然后快乐玩耍
在这里插入图片描述
之后看到mumuzi师傅(套神)提供了一种更快捷的思路,发现判定玩家胜利时,执行了一次winTimer.Set();
在这里插入图片描述
控制台执行这个代码,拿到flag
在这里插入图片描述

Misc

冰冰好像藏着秘密

打开压缩包,报错,但是我的rar能正常把图片文件拿出来
在这里插入图片描述
拿到FFT.png
在这里插入图片描述
FFT是提示傅里叶变换,跑脚本(这里拿的是官方给的脚本)

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('FFT.png', 0) #直接读为灰度图像
f = np.fft.fft2(img) #做频率变换
fshift = np.fft.fftshift(f) #转移像素做幅度谱
s1 = np.log(np.abs(fshift))#取绝对值:将复数变化成实数取对数的⽬的为了将数据变化到0-255
plt.subplot(121)
plt.imshow(img, 'gray')
plt.title('original')
plt.subplot(122)
plt.imshow(s1,'gray')
plt.title('center')
plt.show()

跑出的结果能模糊地看到flag,保存到本地放大图片看到flag
在这里插入图片描述


看wp才知道,打开压缩包的时候之所以报错,是因为这个是考点–RAR伪加密

确实,平时见到的都是zip伪加密,RAR伪加密属实少见

修复的话和zip伪加密类似,改一个数字就行,或者直接binwalk分离出来

interesting_fishing

附件和图片中各藏了一半的flag

在这里插入图片描述
打开第一个bin文件,发现像是qq邮件
在这里插入图片描述
把文件后缀改成eml,打开得到
在这里插入图片描述
图片的名字是ThisIsSecret.jpg,提示使用our secret解密
在这里插入图片描述
拿到[email protected]@RuS}

看邮件中的另一个附件,是一个vs工程文件,用notepad++打开Browse.VC.db,看到一串base64加密的字符串,解密
在这里插入图片描述
得到

\u-65432?\u-65420?\u-65420?\u-65424?\u-65421?\u-65478?\u-65489?\u-65489?\u-65418?\u-65426?\u-65437?\u-65420?\u-65434?\u-65491?\u-65486?\u-65487?\u-65485?\u-65491?\u-65487?\u-65486?\u-65483?\u-65481?\u-65488?\u-65482?\u-65487?\u-65487?\u-65486?\u-65485?\u-65490?\u-65437?\u-65425?\u-65421?\u-65490?\u-65439?\u-65424?\u-65491?\u-65426?\u-65439?\u-65426?\u-65430?\u-65431?\u-65426?\u-65433?\u-65490?\u-65427?\u-65415?\u-65423?\u-65437?\u-65428?\u-65425?\u-65419?\u-65436?\u-65490?\u-65437?\u-65425?\u-65427?\u-65489?\u-65456?\u-65415?\u-65425?\u-65426?\u-65433?\u-65415?\u-65439?\u-65426?\u-65433?\u-65499?\u-65486?\u-65488?\u-65421?\u-65420?\u-65425?\u-65422?\u-65435?\u-65421?\u-65499?\u-65486?\u-65488?\u-65428?\u-65425?\u-65417?\u-65499?\u-65486?\u-65488?\u-65425?\u-65426?\u-65499?\u-65486?\u-65488?\u-65434?\u-65425?\u-65422?\u-65435?\u-65431?\u-65433?\u-65426?\u-65499?\u-65486?\u-65488?\u-65433?\u-65425?\u-65425?\u-65436?\u-65421?\u-65499?\u-65486?\u-65488?\u-65439?\u-65427?\u-65431?\u-65436?\u-65499?\u-65486?\u-65488?\u-65458?\u-65425?\u-65422?\u-65420?\u-65432?\u-65499?\u-65486?\u-65488?\u-65461?\u-65425?\u-65422?\u-65435?\u-65439?\u-65426?\u-65499?\u-65486?\u-65488?\u-65469?\u-65457?\u-65450?\u-65463?\u-65468?\u-65491?\u-65487?\u-65479?\u-65499?\u-65486?\u-65488?\u-65424?\u-65439?\u-65422?\u-65439?\u-65426?\u-65425?\u-65431?\u-65439?\u-65490?\u-65422?\u-65439?\u-65422?

写脚本,将其中的数字分离出来,然后用65536-数字,再转字符

s=r"\u-65432?\u-65420?\u-65420?\u-65424?\u-65421?\u-65478?\u-65489?\u-65489?\u-65418?\u-65426?\u-65437?\u-65420?\u-65434?\u-65491?\u-65486?\u-65487?\u-65485?\u-65491?\u-65487?\u-65486?\u-65483?\u-65481?\u-65488?\u-65482?\u-65487?\u-65487?\u-65486?\u-65485?\u-65490?\u-65437?\u-65425?\u-65421?\u-65490?\u-65439?\u-65424?\u-65491?\u-65426?\u-65439?\u-65426?\u-65430?\u-65431?\u-65426?\u-65433?\u-65490?\u-65427?\u-65415?\u-65423?\u-65437?\u-65428?\u-65425?\u-65419?\u-65436?\u-65490?\u-65437?\u-65425?\u-65427?\u-65489?\u-65456?\u-65415?\u-65425?\u-65426?\u-65433?\u-65415?\u-65439?\u-65426?\u-65433?\u-65499?\u-65486?\u-65488?\u-65421?\u-65420?\u-65425?\u-65422?\u-65435?\u-65421?\u-65499?\u-65486?\u-65488?\u-65428?\u-65425?\u-65417?\u-65499?\u-65486?\u-65488?\u-65425?\u-65426?\u-65499?\u-65486?\u-65488?\u-65434?\u-65425?\u-65422?\u-65435?\u-65431?\u-65433?\u-65426?\u-65499?\u-65486?\u-65488?\u-65433?\u-65425?\u-65425?\u-65436?\u-65421?\u-65499?\u-65486?\u-65488?\u-65439?\u-65427?\u-65431?\u-65436?\u-65499?\u-65486?\u-65488?\u-65458?\u-65425?\u-65422?\u-65420?\u-65432?\u-65499?\u-65486?\u-65488?\u-65461?\u-65425?\u-65422?\u-65435?\u-65439?\u-65426?\u-65499?\u-65486?\u-65488?\u-65469?\u-65457?\u-65450?\u-65463?\u-65468?\u-65491?\u-65487?\u-65479?\u-65499?\u-65486?\u-65488?\u-65424?\u-65439?\u-65422?\u-65439?\u-65426?\u-65425?\u-65431?\u-65439?\u-65490?\u-65422?\u-65439?\u-65422?"
l=list(s[3:-1].split(r"?\u-"))
flag=""
for i in l:
    flag+=chr(65536-int(i))
print(flag)

访问得到的网站,下载压缩包

https://vnctf-213-1257061123.cos.ap-nanjing.myqcloud.com/Pyongyang%20stores%20low%20on%20foreign%20goods%20amid%20North%20Korean%20COVID-19%20paranoia.rar

贴心地提示密码是四位数字
在这里插入图片描述
这里是rar5,不能用ARCHPR爆破,可以使用hashcat

hashcat -m 13000 -a 3 $rar5$16$1349cb834c70bf27bb4e48bb3fbe6975$15$ca4a3bc58278b04d9fba4
d7d52acb196$8$56245cd11e4a1c2e ?d?d?d?d

也可以使用Accent RAR Password Recovery进行爆破
在这里插入图片描述

得到密码9705,把文件后缀改成zip,发现有hideinfo.xml文件
在这里插入图片描述
最后一层是零宽字符隐写在线解密网站
在这里插入图片描述
拼在一起得到完整flag:
vnctf{[email protected]@RuS}

原网站

版权声明
本文为[z.volcano]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45696568/article/details/114885373