[羊城杯 2024]Check in

下载附件,解压的时候发现注释:5unVpeVXGvjFah

解压得到的flag.txt文件内容如下:


注释5unVpeVXGvjFah放到随波逐流中一键解码发现base58解码得出一个正常点的字符串:Welcome2GZ,应该是某个key?


去hex解码(十六进制解码)一下:

从输出结果可以看出,基本都是TLS流量,推测还有key.log,可以直接保存为.pcapng文件或者也可以用脚本生成1.pcapng文件:

def hex_to_pcapng(hex_string, output_file):
    # 将十六进制字符串转换为字节数据
    byte_data = bytes.fromhex(hex_string)

    # 将字节数据写入文件
    with open(output_file, 'wb') as f:
        f.write(byte_data)


def clean_hex_string(hex_string):
    # 清理输入,去掉任何非十六进制字符,并确保长度为偶数
    cleaned_hex = ''.join(filter(lambda x: x in '0123456789abcdefABCDEF', hex_string))
    
    # 如果长度是奇数,则移除最后一个字符以确保长度为偶数
    if len(cleaned_hex) % 2 != 0:
        print("警告:十六进制字符串长度为奇数,已自动修正。")
        cleaned_hex = cleaned_hex[:-1]
    
    return cleaned_hex


if __name__ == "__main__":
    # 读取十六进制字符串(假设从文件中读取)
    input_file = r"E:\\downloads\\FLag.txt"
    with open(input_file, 'r') as f:
        hex_string = f.read().strip()

    # 检查文件是否以0d0a开头并去除之
    if hex_string.startswith('0d0a'):
        hex_string = hex_string[4:]

    # 打印出 hex string 以供调试
    print(f"原始十六进制字符串:{hex_string}")

    # 清理输入
    hex_string = clean_hex_string(hex_string)

    # 写入pcapng文件
    output_filename = r"E:\\downloads\\1.pcapng"
    hex_to_pcapng(hex_string, output_filename)

    print(f"已成功转换为 {output_filename}")


观察发现Flag.txt中有很多空白字符和空字符,所以猜到用wbstego去提取:


得到一个.log文件:


导入TLS的日志1.log:


http contains "flag"

“GIF89a”很明显的.gif文件,也可以追踪TLS流查看信息:

当然也可以通过NetA工具来分析一下:

一样能检测出有flag.gif的字符串


选择原始数据,另存为.gif文件:


此时直接打开会显示图片已损坏(因为有报文头的干扰),用010editor打开,按照(.gif文件的文件头和文件尾)的格式来保存文件:

文件头47 49 46 38

文件尾00 38

得到正常的gif图片:


用PuzzleSolver提取帧间隔:


得到如下内容:

['30', '230', '30', '230', '30', '230', '30', '230', '30', '230', '30', '230', '230', '230', '230', '230', '30', '30', '230', '230', '30', '30', '30', '30', '30', '230', '230', '230', '30', '230', '230', '230', '30', '230', '30', '30', '230', '230', '230', '30', '30', '230', '30', '230', '230', '230', '230', '230', '30', '30', '230', '230', '30', '30', '30', '230', '30', '230', '30', '230', '30', '230', '30', '30']

很明显,30转为0,230转为1,二进制转文本:

得到flag:

DASCTF{U_0wN_1T}

### 关于羊城2024 PWN比赛Writeup 针对2024年“羊城”粤港澳大湾区网络安全大赛PWN部分的比赛写真,可以参考Ns100kUp发布的详细分析[^1]。该文档不仅涵盖了比赛的整体情况,还特别提到了一些关键技术细节。 #### xpstack技术解析 在比赛中提到的一个重要概念是`xpstack`,这是一种用于处理特定漏洞利用的技术框架。通过这种技术,选手能够更高效地构建攻击载荷并绕过某些防护机制。 #### hardsandbox挑战分析 对于hardsandbox这一题目,存在一个问题即使用`openat2`函数仅能在本地环境中成功执行而无法应用于远程场景[^2]。这主要是因为`openat2`涉及到的操作权限以及网络环境下的文件描述符传递问题,在实际应用中需要额外考虑这些因素的影响。 以下是将USB数据转换成坐标的Python脚本示例,此代码片段来源于往届比赛中的一个实例[^3]: ```python nums = [] with open('usbdata.txt', 'r') as keys, open('xy.txt', 'w') as f: posx = 0 posy = 0 for line in keys: if len(line.strip()) != 12: continue x = int(line[3:5], 16) y = int(line[6:8], 16) if x > 127: x -= 256 if y > 127: y -= 256 posx += x posy += y btn_flag = int(line[0:2], 16) # 解析按钮标志位 if btn_flag != 0: # 如果检测到鼠标按键被按下,则记录当前位置 f.write(f"{posx} {posy}\n") ``` 此外,还有一个名为`Re BBBButton`的flag字符串提供了进一步的研究方向[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值