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代码替换到网页上进行实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式系统学习(一)

嵌入式现状(UP经历): 大厂的招聘要求: 技术栈总结: 产品拆解网站: 52audio 方案查询网站iotku,我爱方案网, 主要元器件类型:

【android】对于google-webrtc的性能中, memory leak

目录 zlmediakit->webrtcplay->app webrtcutil1/3 测试程序等 zlmediakit->webrtcplay->app 编译sdk 32 有时候会从开始新增5M,就稳定在一个值了 webrtcutil1/3 测试程序等 编译sdk 30

Oracle和Mysql数据库

数据库 Oracle 体系结构与基本概念体系结构基本概念表空间(users)和数据文件段、区、块Oracle数据库的基本元素 Oracle数据库启动和关闭Oracle数据库启动Oracle数据库关闭 Sqlplussqlplus 登录数据库管理系统使用sqlplus登录Oracle数据库远程登录解锁用户修改用户密码查看当前语…

逸学区块链【solidity】真随机数

参考Get a Random Number | Chainlink Documentation 但是很贵,价格 Gas Price:当前gas价格,根据网络状况而波动。Callback gas :返回您所请求的随机值时,回调请求消耗的gas 量。验证gas :量gas 用于验证…

Vue3学习记录(二)--- 组合式API之计算属性和侦听器

一、计算属性 1、简介 ​ 计算属性computed(),用于根据依赖的响应式变量的变化,进行自动的计算,并返回计算后的结果。当依赖的响应式变量发生变化时,computed()会自动进行重新计算,并返回最新的计算结果。如果依赖的…

Map和Set讲解

🎥 个人主页:Dikz12📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 集合框架 模型 Set 常见方法和说明 Set总结 Map说明 Map常见方法和说明 Map 中HashMap的 …

Linux一些实用操作

学习笔记,记录以下课程中关于Linux的一些实用操作。黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等_哔哩哔哩_bilibili 目录 1 各类小技巧(快捷键&#xff…

天翼数科实在智能,战略合作签约!Agent最大化赋能应用领域

近日,天翼数智科技(北京)有限公司(以下简称“天翼数科”)与杭州实在智能科技有限公司(以下简称“实在智能”)签署战略合作协议。 基于本次战略合作,天翼数科将与实在智能发挥各自的专业特长,整合…

在CentOS 7 中配置 YUM源

目录 YUM源的功能: YUM 源的安装过程 ps YUM工具 配置YUM仓库/YUM源 网络源:使用官方源 前提:联网 YUM源的功能: YUM(Yellowdog Updater Modified)是一个在Red Hat、CentOS、Fedora等基于RPM的Linux发…

Nat Med | 儿童急性淋巴细胞白血病基因组景观中的药物类型

今天给同学们分享一篇实验文章“Pharmacotypes across the genomic landscape of pediatric acute lymphoblastic leukemia and impact on treatment response,这篇文章发表在Nat Med期刊上,影响因子为82.9。 结果解读: 与ALL药物敏感性的临…

C++(17.5)——list模拟实现扩展

在上篇文章中,实现了的大部分功能以及部分迭代器。本片文章将对剩下的功能进行补充。 1. const迭代器: 对于上篇文章中实现的迭代器只能使用于非类型的对象。对于类型的遍历,则需要额外编写类型的迭代器。例如对于下面的场景: …

【持续更新】2024牛客寒假算法基础集训营1题解 | JorbanS

文章目录 [A - DFS搜索](https://ac.nowcoder.com/acm/contest/67741/A)[B - 关鸡](https://ac.nowcoder.com/acm/contest/67741/B)[C - 按闹分配](https://ac.nowcoder.com/acm/contest/67741/C)[E - 本题又主要考察了贪心](https://ac.nowcoder.com/acm/contest/67741/E)[F -…

Unknown custom element:<xxx>-did you register the component correctly解决方案

如图所示控制台发现了爆红(大哭): 报错解释: 当我们看到报错时,我们需要看到一些关键词,比如显眼的“component”和“name”这两个单词, 因此我们就从此处切入,大概与组件有关系。…

Spring Boot--07--@Repository 和@Mapper的区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.Repository的作用1.1 含义1.2 Repository与Service和Component有什么区别?1.3 使用场景单独使用Repository,需要配合使用MapperScannerCon…

深度学习的新前沿:突破、应用与挑战

引言 深度学习的快速发展已经在人工智能领域引起了革命性的变化。作为模仿人脑结构和功能的强大工具,深度神经网络在图像识别、自然语言处理、医学诊断等多个领域取得了显著成就。但是,随着技术的不断推进,深度学习也在不断地进化和扩展其能…

云上自动部署丨使用 Terraform 在 AWS 上搭建 DolphinDB

HashiCorp Terraform 是一款基础架构即代码工具,旨在实现 "Write, Plan, and Create Infrastructure as Code"。它通过配置文件来描述云资源的拓扑结构,包括虚拟机、存储账户和网络接口。Terraform 几乎支持市面上所有的云服务,能够…

一键部署FC超级马里奥web游戏

效果展示 安装 拉取镜像 #拉取镜像 docker pull stayhungrystayfoolish666/mario #创建并启动容器 docker run -d -p 10034:8080 --name maliao --restartalways stayhungrystayfoolish666/mario:latest 使用 浏览器打开 http://你的ip:10034/

C++ //练习 4.5 写出下列表达式的求值结果。

C Primer(第5版) 练习 4.5 练习 4.5 写出下列表达式的求值结果。 ( a ) -30 * 3 21 / 5 ( b ) -30 3 * 21 / 5 ( c ) 30 / 3 * 21 % 5 ( d ) -30 / 3 * 21 % 4 环境:Linux Ubuntu(云服务器) 工具:…

CSS实现文字大小自适应

遇到的问题: 在写页面的时候,兼容手机和PC页面,这样字体大小就需要根据页面的大小进行动态变化。 解决方法: clamp()函数 clamp() 函数的作用是把一个值限制在一个上限和下限区间,当这个值超过区间范围时,…

YOLO系列助力涨点!新SOTA让缺陷检测更准更快!附开源数据集下载

缺陷检测在工业自动化、质量控制、安全检测等多个实际应用中都有着广泛的需求。因此这个方向是相对容易发表高质量论文的,尤其是当研究涉及到创新的算法、改进的技术、新的应用场景或显著提高检测性能时。 在这其中,YOLO系列算法与缺陷检测的结合已经取…