前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安恒五月赛DAS x BJD部分wp

安恒五月赛DAS x BJD部分wp

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

MISC

Questionnaire

打开题目网址是个问卷,f12查看可以看到答案和对应的部分flag,拼接在一起即可得到完整flag

babyweb

打开题目网址,f12找到password部分,可以看到有零宽度字符

把整句话复制出来,vim也可以看到

尝试零宽度字符隐写的几个网址,最终用这个解开:https://offdev.net/demos/zwsp-steg-js

得到隐写的明文:zerowidthcharactersinvisible,即压缩包密码

打开压缩包发现里面的png损坏,010editor查看发现整体被倒置,用脚本反过来

代码语言:javascript
复制
f=open('f14g.png','r').read()
fi=open('out.png','w')
fi.write(f[::-1])
fi.close()

得到图片

前三个为Arthur and the Invisibles,中间三个为银河字母,再后三个为跳舞的小人,最后两个为图腾

前几个都可以在这个网址找到在线解密:https://www.dcode.fr/tools-list#symbols

最终得到flag:BJD{UVWHZAITWAU},md5一下取32小写即可

/bin/cat 2

下载附件,打开是个gif,而且其中只有两种图案,将图片整体缩小后观察可以看出是个二维码(不过宽为高的两倍,需要改一下),两种处理方式

testyournc

连上nc,pwd查看当前目录路径,ls -a可以看到当前目录下的文件,有个flag,查看发现只显示了一只小老鼠,再ls /查看一下,可以看到两个和flag有关的文件:f1a9.bakf1a9.py,cat命令查看py文件发现没有权限,查看bak文件可以得到和flag相关的python代码

发现在flag这个文件中藏有真正的flag,但是flag在文件中被随机写入,整体会很稀疏,所以在刚开始读取flag文件时只会显示一只小老鼠(后面的加载不出来),于是想到写脚本读取文件,附上小帽师傅的脚本

代码语言:javascript
复制
a=open('flag')
a.seek(1024*1024*1024)
for i in range(1024,13428):
    a.seek(1024*1024*1024*i)
    if a.read(1)==str(chr(0x00)):
        continue
    else:
        a.seek(1024*1024*1024*i)
        print(i)
        print(a.read(20))

将脚本base64后利用echo执行一句话脚本

将得到的几部分flag拼接在一起即是最后的flag

manual

ssh连上靶机,可以看到欢迎界面

给了一串emoji和网址,打开那个网址是emoji加密,之前虎符也用这个出过题,suika翻译过来是日语中西瓜的意思,很明显这个西瓜就是解密的密钥,但是这个加密网址有个特点:解密需要特定的链接,可以参考虎符的奇怪的组织这道题,解密方法也在文章中提到过:构造解密链接

先去emoji网站查到标准的西瓜的emoji(非标准无法构造),然后将其构造成以下形式

先base64,再URL Encode,最后仿照其他的解密链接构造成完整链接

代码语言:javascript
复制
https://codemoji.org/share.html?data=eyJtZXNzYWdlIjoi8J%2BQgPCfkL7wn4y08J%2BanPCfjYvwn5CK8J%2BNh%2FCfkILwn42T8J%2BOkfCfkIjwn5Cf8J%2BSgfCfmp%2Fwn42XIiwia2V5Ijoi8J%2BNiSJ9

直接访问这个链接,就可以进入解密页面,选择西瓜,即可得到明文

得到C0dEmOj!so4UnNy,作为连接靶机的passwd,输入后即可进入靶机

(未完待续ing……)

CRYPTO

bbcrypto

下载附件得到脚本

代码语言:javascript
复制
# -*- coding:utf-8 -*-
import A,SALT
from itertools import *

def encrypt(m, a, si):
    c=""
    for i in range(len(m)):
        c+=hex(((ord(m[i])) * a + ord(next(si))) % 128)[2:].zfill(2)
    return c

if __name__ == "__main__":
    m = 'flag{********************************}'
    a = A
    salt = SALT
    assert(len(salt)==3)
    assert(salt.isalpha())
    si = cycle(salt.lower())
    print("明文内容为:")
    print(m)
    print("加密后的密文为:")
    c=encrypt(m, a, si)
    print(c)
    #加密后的密文为:
    #177401504b0125272c122743171e2c250a602e3a7c206e014a012703273a3c0160173a73753d

先通过给的密文,对应fg算出a=57,再根据fla跑脚本弄出salt值的三个字母,得到salt=ahh

代码语言:javascript
复制
a = 57
for i in range(97,123):
    if hex((ord('f')*a + i) % 128)[2:].zfill(2) == '17':
        print ('1:'+chr(i))
    if hex((ord('l')*a + i) % 128)[2:].zfill(2) == '74':
        print ('2:'+chr(i))
    if hex((ord('a')*a + i) % 128)[2:].zfill(2) == '01':
        print ('3:'+chr(i))

有了a和salt再写解密脚本即可得到flag,由于我自己的脚本怎么改都改不对,就放我xialow大哥的脚本做为参考

代码语言:javascript
复制
from binascii import unhexlify
from gmpy2 import *
from itertools import *

def decrypt(c, a, si):
    m = b''
    for i in range(len(c)):
        m += bytes.fromhex(hex((c[i] - ord(next(si)) + 128) * invert(a,128) % 128)[2:].zfill(2))
    return m

c = '177401504b0125272c122743171e2c250a602e3a7c206e014a012703273a3c0160173a73753d'
c = unhexlify(c)
a = 57
salt = 'ahh'
si = cycle(salt.lower())
print(decrypt(c, a, si))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MISC
    • Questionnaire
      • babyweb
        • /bin/cat 2
          • testyournc
            • manual
            • CRYPTO
              • bbcrypto
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档