Hgame题解(第一星期)

2024-02-22 13:30
文章标签 题解 第一 星期 hgame

本文主要是介绍Hgame题解(第一星期),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hgame题解(第一星期)

Web

ezHTTP

打开靶机首先看到题目提示:请从vidar.club访问这个页面
根据http协议,需要创建一个Referer字段,其值设置为vidar.club(意思是从该网页跳转到靶机网页的),使用Hackbar工具添加即可。

之后网页又提示:请通过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头替换成自己浏览器的UA值。

最后一步也是最耗时的一步,题目提示:请从本地访问这个页面
那不就是XFF吗?直接添加该字段提交,但是没用,说明网站没有通过XFF字段判断是否从本地访问的,这一点也可以通过查看网站返回的响应包头看得出来(Hint:Not XFF)。
在这里插入图片描述

但是我就只知道一个XFF,没办法只能从Google上搜索,搜索后发现除了XFF字段还有很多字段都可以标识从本地访问,相关链接

经过测试发现X-Real-IP字段有效,添加该字段,题目有提示:Ok, the flag has been given to you
但是网页上直接看不到,猜测可能是藏在网页源码或者响应头里了(毕竟Hint就在那里出现过)

事实上,通过查看响应头发现可疑字段(因为之前查看响应头都没有这个字段)
在这里插入图片描述

询问GPT后得知这是一个JSON Web Token (JWT),虽然我也不知道具体是什么,但是根据它的描述这里面是可以包含信息的,它说:Header 和 Payload 通常是经过 Base64 编码的 JSON 字符串。,那么通过Base64解码其Payload部分得到了重要值:

{“F14g”:“hgame{HTTP_!s_1mP0rT4nt}”}

虽然没有明说是flag,但是看起来就像flag,尝试提交通过,发现正确,虽然到这里来讲题目做完了,但是在做题过程中还学到了关于使用BP的新知识。

当我尝试寻找能够替换XFF的字段时最先使用的是BurpSuite工具,但是一直没有做出来,卡在需要本地访问那个页面,但是同样的字段使用Hackbar提交就能拿到flag,我以为是BP的问题,后来经过询问学长和自己的比对尝试发现BP对于构造请求头有行数要求:
在这里插入图片描述
当左边的行数小与13行时(此时是12行),那么发送请求包将失败,并且BP会将Send按钮从红色变成白色,点击不了,当行数大于等于13行时才能正常发送正常返回正确网页(即便多余行数是空白行)。

另外如果在X-Real-IP:127.0.0.1行前加上空白行那么效果等同于没有添加这个字段,返回的还是从本地访问页面

2048*16

打开靶机是一个2048网页小游戏:
在这里插入图片描述
最开始我的思路是查看网页源码,flag可能会藏在源码里,由于对Web代码的陌生,导致我在这一步花费了很长时间也没有找到关键信息,后来又是在学长的提示下将目标锁定在了网页里唯一的一个js文件,初步猜测是一个实现游戏功能的脚本文件,但是直观上看得不到任何信息,因为这个文件经过混淆加密了的,好在网页下方有提供该游戏原版网页,访问这个网页发现和靶机网页一模一样。

在原版网页中我找到了没有混淆过的游戏源码,被保存在index.js文件中:,
通过比对该文件和靶机网页js代码,找到实现判断输赢的关键代码,在原版网页中判断输赢的代码是通过定义this.won = !1,实现的,将其修改成1即可在游戏一开始就判断赢然后输出flag,找到这行代码在靶机js代码中的具体位置

通过两个文件代码的一一比对以及关键字,找到了this.won = !1的对应位置this[x(460)] = 1,(这里我修改过的,所以是1而不是!1,为了解答题目就需要设置成1)

在这里插入图片描述

接下来就是让修改过的js代码生效,首先就是在自己桌面上创建和网站上一摸一样的目录结构(top/47.102.130.35:31865/assets/),在assests下再创建index-_wkhdPNY.js,将修改过的完整js代码一起复制进去,由于windows上不允许创建文件夹名包含:,因此需要用%3A来替换:,效果一样。

然后在替换页面导入该目录,启用调试,刷新页面,等待页面刷新即可出现flag。
在这里插入图片描述

这道题首先学会了分析js源代码和混淆代码,将关键字进行替换,然后是知道了如何将修改的js代码替换到网页上进行实现。

Bypass it

这是我第一次被题目描述给误导了,题目提示:This page requires javascript to be enabled 😃
然后我就在想是不是题目给我们指明禁用js这条路不通,让我们往其他方向试试,比如sql注入之类的,但是其实还是得用禁用js来解题,题目描述本身没问题,指明了关键词js,但是偏偏信了,而且还没去试试禁用js可不可以,我还一度认为这题算比较难的。

正式解题,打开靶机是一个登录页面,下方有一个注册按钮,由于这题和js有关,那么大概率就是注册页面的js代码可以被禁用,打开注册页面弹出不允许注册,直接禁用js,发现可以正常注册了。那么随便注册一个账号然后返回登陆页面进行登录(使用刚刚注册的账号)
在这里插入图片描述
登陆成功,进入了个人中心,点击Click here,得到flag

Select Courses

这是一个选课平台,要求我们帮忙选到课程人数已满的课程(刚开始我也不知道为什么已满还能选上),由于网站会携带选课的课程id给服务器,服务器判断后返回是否选上的数据包,所以我的思路是修改这个数据包,刚好包里有一个值是"full":1,但是修改了没啥用

看了题解才知道需要设置脚本一直跑,让脚本连续发请求进行选课,以下是Python脚本代码:

import requests
import timeurl = "http://106.14.57.14:32498//api/courses"
data = {"id": 0}while True:for i in range(1, 6):data["id"] = iresponse = requests.post(url, json=data)print(f"Response for id={i}: {response.text}")

需要注意的是url的构造和json的内容

在这里插入图片描述

然后让脚本一直跑,基本上就能把所有课程跑完,可能后面有一两个课程要花一点时间才能跑出来,不过都是可以通过这种方式选出来的,最后得到flag

jhat(详细解题思路)

首先是题目提示:jhat is a tool used for analyzing Java heap dump files
不知道什么是jhat,询问ChatGPT,这篇文章比较清楚的介绍了相关概念

初步了解之后我自己的理解是,OQL是一种利用Java对象的数据库,类似SQL可以进行注入,还拥有类似SSTI的代码执行功能,而jhat能以web网页的形式显示Java程序堆信息,里面自带OQL查询功能,然后类似SQL或者SSTI这种方式进行攻击

打开题目页面,下载附件,是dockerfile(里面有关于容器的搭建信息,可以作为参考)

在这里插入图片描述

这里点击Execute Object Query Language (OQL) query可以访问查询页面
在这里插入图片描述
这个页面就是进行操作的了

在这里插入图片描述

这里我不懂Java对象的关系和使用,因此我直接将能得到flag的执行语句粘贴在下面:

new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("cat flag").getInputStream(),"gbk")).readLine()

其实感觉和SSTI大同小异,但是利用的是Java语言而不是Flask模板,可以从执行语句中明显的看到cat flag来获取flag,当然还有其他的语句可以获取flag,如:

var process = java.lang.Runtime.getRuntime().exec("cat /flag");
var inputStream = process.getInputStream();
var scanner = new java.util.Scanner(inputStream).useDelimiter("\\A");
var result = scanner.hasNext() ? scanner.next() : "";
result;

在这里插入图片描述
关于该题的另一个题解:点击这里

PWN

EzSignIn

打开靶机发现提示:nc 47.102.130.35:31523
直接打开Kali虚拟机nc连接即可获得flag,注意kali中nc格式是:nc 47.102.130.35 31523(ip和端口之间是空格)

这篇关于Hgame题解(第一星期)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735395

相关文章

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

LeetCode 第414场周赛个人题解

目录 Q1. 将日期转换为二进制表示 原题链接 思路分析 AC代码 Q2. 范围内整数的最大得分 原题链接 思路分析 AC代码 Q3. 到达数组末尾的最大得分 原题链接 思路分析 AC代码 Q4. 吃掉所有兵需要的最多移动次数 原题链接 思路分析 AC代码 Q1. 将日期转换为二进制表示 原题链接 Q1. 将日期转换为二进制表示 思路分析

半年高达552亿元,锁定云第一,中国电信天翼云紧追不舍

【科技明说 | 科技热点关注】 刚才我注意到中国电信公布2024年中期业绩,报告期内,中国电信实现营业收入为人民币2660亿元,同比增长2.8%,其中服务收入为人民币2462亿元,同比增长4.3%;净利润为人民币218亿元,同比增长8.2%。 其中亮点,2024年上半年,天翼云保持快速增长,收入达到了552亿元,同比增长20.4%,占服务收入比升至22.4%,市场头部地位进一步巩固。 为

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>

P2858 [USACO06FEB] Treats for the Cows G/S 题解

P2858 题意 给一个数组。每天把最左或者最右的东西卖掉,第 i i i个东西,第 d a y day day天卖出的价格是 a [ i ] ∗ d a y a[i]*day a[i]∗day。 记忆化搜索 void dfs(int l,int r,int day,ll sum){if(v[l][r]>=sum)return;v[l][r]=sum;if(l>r)//这就是dp答案{

【C++题解】1272. 郭远摘苹果

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》 问题:1272. 郭远摘苹果 类型:二维数组 题目描述: 郭远有一天走到了一片苹果林,里面每颗树上都结有不同数目的苹果,郭远身上只能拿同一棵树上的苹果,他每到一棵果树前都会把自己身上的苹果扔掉并摘下他所在树上的苹果并带走(假设郭远会走过每一棵苹果树),问在郭远摘苹果的整个过程中,他身上携带的最多苹果数与最小苹果数的差是多少?

【最新华为OD机试E卷-支持在线评测】机器人活动区域(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 94 分 最新华为OD机试目录: https://blog.