前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DozerCTF2021 Misc wp

DozerCTF2021 Misc wp

作者头像
回天
发布2023-04-25 15:53:46
1960
发布2023-04-25 15:53:46
举报
文章被收录于专栏:Ga1@xy's W0r1dGa1@xy's W0r1d

题目太简单了,都不是很想写来着,但想了想还是记录一下吧

不会有人以为re那道才是签到吧

签到题,flag在视频里出现了一瞬间

dozer签到
dozer签到

ezmisc

从给的图片里能分离出来一个gif和一个png,gif一共七帧,能分离出来七个二维码

image-20210530132836647
image-20210530132836647

扫码得到一部分flag

代码语言:javascript
复制
DozerCTF{is_it_simple

扫大的二维码能得到零宽字符隐写的一段文字,vim查看可以看到由200b、200c、200d、200e、200f五种字符构成,是zwsp_steg

image-20210530133019422
image-20210530133019422
代码语言:javascript
复制
#python3
import zwsp_steg

f = open('out.txt', 'r').read()
print(zwsp_steg.decode(f, zwsp_steg.MODE_FULL))

得到后半部分flag

代码语言:javascript
复制
_for_you!congratulate}

detective_novel

图片文件尾有个压缩包,分离出来得到两张图片,hint内容和guess相关,结合另一个jpg文件,想到outguess,hint图片的文件尾还有一个压缩包,分离出来,得到跳舞的小人加密,解得DOZER,作为密钥再解outguess,即可得到flag

代码语言:javascript
复制
outguess -k DOZER -r flag.jpg flag.txt

一点也不杂

根据题目给的三个文件可以大致推测flag分为三部分,先看日历图,在图片尾可以得到一些字符串

代码语言:javascript
复制
D 040513202625181104
O 0506071522282726181105
Y 051307132027
O 0506071522282726181105
U 051219262728211407
K 0512192606122028
N 26191205132129221508
O 0506071522282726181105
W 0325052707
_ 252627
C 07060504111825262728
R 25181104050612111927
T 05060706132027

结合给的日历上的日期,可以画出来一些字母的形状,得到第一部分flag

代码语言:javascript
复制
DOYOUKNOW_CRT

第二部分是个CRT,找个脚本解一下

代码语言:javascript
复制
from functools import reduce
def egcd(a, b):
    if 0 == b:
        return 1, 0, a
    x, y, q = egcd(b, a % b)
    x, y = y, (x - a // b * y)
    return x, y, q
def chinese_remainder(pairs):
    mod_list, remainder_list = [p[0] for p in pairs], [p[1] for p in pairs]
    mod_product = reduce(lambda x, y: x * y, mod_list)
    mi_list = [mod_product//x for x in mod_list]
    mi_inverse = [egcd(mi_list[i], mod_list[i])[0] for i in range(len(mi_list))]
    x = 0
    for i in range(len(remainder_list)):
        x += mi_list[i] * mi_inverse[i] * remainder_list[i]
        x %= mod_product
    return x
if __name__=='__main__':
    print(chinese_remainder([(5, 2), (7, 2), (17, 9), (23, 16)]))

得到5007

第三部分是个base85,在线网站解一下

代码语言:javascript
复制
_good_over}

拼在一起加个壳就是最终的flag

代码语言:javascript
复制
DozerCTF{DOYOUKNOW_CRT5007_good_over}

funny_pixel

和国赛的那个running_pixel类似,换汤不换药

一共218张图片,放大看前几张,可以看到图片里有0或1的数字图案,其中1占了5个像素,脚本遍历一下再b2s即可

代码语言:javascript
复制
from PIL import Image
import libnum

flag = ''
for i in range(1, 219):
    ans = 0
    img = Image.open("./funny_pixel/%d.png"%(i))
    for x in range(img.size[0]):
        for y in range(img.size[1]):
            p = img.getpixel((x,y))
            if p == (239,239,39):
                ans += 1
    if ans == 5:
        flag += '1'
    else:
        flag += '0'

print libnum.b2s(flag[:(218 - 218 % 8)])
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 不会有人以为re那道才是签到吧
  • ezmisc
  • detective_novel
  • 一点也不杂
  • funny_pixel
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档