[hgame 2024 week1]

2048*16

  • 打开题目是一个游戏题
    在这里插入图片描述- 查看js文件,没有搜索到flag
    view-source:http://139.224.232.162:31590/assets/index-_wkhdPNY.js
  • js代码格式化后,找到两串字符
    I7R8ITMCnzbCn5eFIC=6yliXfzN=I5NMnz0XIC==yzycysi70ci7y7iK
    V+g5LpoEej/fy0nPNivz9SswHIhGaDOmU8CuXb72dB1xYMrZFRAl=QcTq6JkWK4t3
  • 第二段字符一共65位,没有重复字母,且有+=/
  • 考虑base64编码,更换了默认字母表
  • payload1: 使用脚本解码:
import base64

str1 = "I7R8ITMCnzbCn5eFIC=6yliXfzN=I5NMnz0XIC==yzycysi70ci7y7iK"

# 新字母表65位
new_table = "V+g5LpoEej/fy0nPNivz9SswHIhGaDOmU8CuXb72dB1xYMrZFRAl=QcTq6JkWK4t3"
# 默认字母表65位
raw_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

print(base64.b64decode(str1.translate(str.maketrans(new_table,raw_table))))
  • payload2:使用CyberChef网站解码:
    在这里插入图片描述

signin

在这里插入图片描述

  • 在wps里插入图片,拉宽长度,压缩宽带,就能看清flag了
    在这里插入图片描述
  • hgame{WOW_GREAT_YOU_SEE_IT_WONDERFUL}

来自星尘的问候

[题目描述] 一个即将发售的游戏的主角薇^3带来了一条消息。这段消息隐藏在加密的图片里
但即使解开了图片的六位弱加密,看到的也是一张迷惑的图片。
也许游戏的官网上有这种文字的记录?
补充:flag格式为hgame\{[a-z0-9_]+\}

在这里插入图片描述- 参照博客 https://blog.csdn.net/Blood_Seeker/article/details/81837571,制作一个steghide密码爆破脚本

#bruteStegHide.sh 
#!/bin/bash

for line in `cat $2`;do
    steghide extract -sf $1 -p $line > /dev/null 2>&1
    if [[ $? -eq 0 ]];then
        echo 'password is: '$line
        exit
    fi  
done 
  • 使用方法:bruteStegHide.sh secret.jpg passwd.txt (passwd.txt是爆破字典)
  • 将爆破成功得到的secret.zip解压后得到一张exa.png图片,和一个上传字体,将输入字体转换成对应字体的页面
    在这里插入图片描述在这里插入图片描述
  • 通过图片搜索,找到来自星尘,这款游戏的官网,从官网加载的资源找到一些字体文件。
    在这里插入图片描述在这里插入图片描述- 猜测官网的字体,对应的是26个大小写字母和数字。
    在这里插入图片描述- 对比得到flag: hgame{welc0me!}
    在这里插入图片描述

希儿希儿希尔

【题目描述】Ch405是一名忠实的希儿厨,于是他出了一道这样的题,不过他似乎忘了这个加密的名字不是希儿了(x虽然经常有人叫错
补充:
图片打不开是正常现象,需要修复
最终得到的大写字母请用hgame{}包裹

  • 用010editor打开图片,有报错提示,猜测应该修改png图片的宽高
  • 使用脚本计算图片宽高
import binascii
import struct

crcbp = open("secret.png", "rb").read()  # 打开图片
crc32frombp = int(crcbp[29:33].hex(), 16)  # 读取图片中的CRC校验值
print(crc32frombp)

for i in range(4000):  # 宽度1-4000进行枚举
    for j in range(4000):  # 高度1-4000进行枚举
        data = crcbp[12:16] + struct.pack(">i", i) + struct.pack(">i", j) + crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xFFFFFFFF
        # print(crc32)
        if (
            crc32 == crc32frombp
        ):  # 计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
            print(i, j)
            print("hex:", hex(i), hex(j))

在这里插入图片描述

  • 用010editor修改图片宽高,得到原始图片
  • 在这里插入图片描述
  • 使用foremost分离文件,得到secret.txt和一张图片
  • secret.txt内容:CVOCRJGMKLDJGBQIUIVXHEYLPNWR
  • 使用StegSolve打开图片,发现lsb隐写信息,根据题目提示,这里应该是希尔密码的key
    在这里插入图片描述
  • 希尔解密,得到flag
    在这里插入图片描述
  • hgame{DISAPPEARINTHESEAOFBUTTERFLY}
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值