当前位置: 首页 > news >正文

筑基挑战 | 第14期

第1题

题目:flag值存放在系统根目录下,请根据所学知识及题目提示,获取flag值

配套工具:Cyberchef

在这里插入图片描述
进来就说是文件包含漏洞,而且配套工具也给了Cyberchef,因此第一思路是直接尝试利用 php 伪协议返回base64编码,然后解码得到flag。

于是构造一个 payload,但结果并未返回:
在这里插入图片描述
此时考虑是否存在过滤,比如过滤了 “php”、“filter”等关键字,但经过初步验证,似乎只是过滤了 php 关键字,而且发现 data 关键字并没有被过滤:
在这里插入图片描述
在这里插入图片描述
那么这道题就可以换个思路,利用 data 伪协议进行。由于已经知道题目中可能存在过滤,因此最保险的方法就是将payload进行编码后再输入。因此首先使用Cyberchef将payload进行base64编码:
在这里插入图片描述
接着通过 data://text/plain;base64,[base64编码]读取根目录文件,发现flag文件名为flag.wasj
在这里插入图片描述
那么就可以直接读取了:
在这里插入图片描述
最终Payload为:

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgLi4vLi4vLi4vZmxhZy53YXNqJyk7Pz4=

第2题

题目:启动环境,通读代码,获得flag值吧,注意flag格式为:flag_nisp_xxxxxx

代码如下:

 <?php
$v1 = 0;
$v2 = 0;
$a = (array)json_decode(@$_GET['w']);
if (is_array($a)) {is_numeric(@$a["bar1"]) ? die("nope") : NULL;if (@$a["bar1"]) {($a["bar1"] > 2020) ? $v1 = 1 : NULL;}if (is_array(@$a["bar2"])) {if (count($a["bar2"]) != 5 or !is_array($a["bar2"][0])) {die("nope");}$pos = array_search("cisp-pte", $a["bar3"]);$pos === false ? die("nope") : NULL;foreach ($a["bar2"] as $key => $val) {$val == "cisp-pte" ? die("nope") : NULL;}$v2 = 1;}
}
if ($v1 && $v2) {include "key.php";echo $key;
}
highlight_file(__file__);
?> 

通读下来,代码首先通过参数‘w’获取数据,并且传递进来的参数必须是JSON格式,接着被转为数组类型。最后发现要想获得 flag,必须使变量$v1$v2均为1才可。

回归到代码中,要使$v1 = 1,需要“bar1”对应的值不是数字,却要大于2020。这里考虑到PHP的弱类型比较,将“bar1”取值为“2021a”即可解决。

要使$v2 = 1,需要“bar2”是数组,并且长度得等于5,第一个元素是数组,且不能存在“cisp-pte”字符串;“bar3”也得是数组,且必须要存在“cisp-pte”元素。因此此处将“bar2”构建为[[],"a","a","a","a"],将“bar3”构建为["cisp-pte"]

最终构建出的payload为:

?w={"bar1":"2021a","bar2":[[],"a","a","a","a"],"bar3":["cisp-pte"]}

第3题

题目:下载日志包,分析日志,找到flag值吧

进入界面后,告知我们有人入侵了服务器,但不知道哪里出现问题,要我们通过日志分析来找出攻击利用点。
在这里插入图片描述
先下载日志文件,长长一大条。
在这里插入图片描述
首先思路就是,日志往往是随着时间记录的,这样想的话,一般攻击成功的信息都会留在日志后面,因此先从日志最后开始分析,果然发现了几串 200 响应码的日志,盲猜攻击者在进行目录扫描这种工作。
在这里插入图片描述
其中最吸引我注意力的就是/upload/admin目录了,因为/upload目录里可能存在攻击者上传的一些恶意文件,/admin则与管理员相关,一般攻击者都会考虑获取管理员权限嘛。

结果/upload无法访问,/admin目录里则出现了一个 backdoor.php 文件:
在这里插入图片描述
在这里插入图片描述
点进该php文件,获取到flag。

http://www.xdnf.cn/news/36397.html

相关文章:

  • 数字孪生火星探测车,星际探索可视化
  • 解码 Web Service:从技术原理到应用场景的深度剖析
  • 可以直接本地使用的Python环境可以调用的AI大模型归纳整理(AI辅助)
  • 如何防止接口被刷
  • 内积(Inner Product)
  • C#测试linq中的左连接的基本用法
  • 红黑树模拟实现STL中的map和set---C++
  • ThingsBoard3.9.1 MQTT Topic(3)
  • 【入门】数数小木块
  • OpenFeign终极指南:超时控制、重试策略、拦截器与自定义Starter
  • Stable Diffusion秋叶整合包V4独立版Python本地API连接指南
  • 《Operating System Concepts》阅读笔记:p738-p747
  • 《C#数据结构与算法》—集合、映射
  • 基于Spring AI与OpenAI API的深度实践:调用DeepSeek模型构建智能应用全指南
  • Win10驱动程序强制签名怎么禁用/开启?
  • C++按位与()、按位或(|)和按位异或(^)
  • 并发网路通信-套接字通信
  • 【数学】数学分类
  • 日志分析---宝瓜Windows日志分析器
  • 什么是 Stream
  • Vue3 + TypeScript中defineEmits 类型定义解析
  • [oeasy]python089_列表_删除列表项_remove_列表长度_len
  • 纯FPGA实现驱动AD9361配置的思路和实现之一 概述
  • 从数据处理方式,系统可扩展性和处理性能三方面比较管道过滤器风格和仓储风格
  • Python Requests 库:从安装到精通
  • Dijkstra 算法
  • 蓝桥杯练习题2
  • 深入理解 Spring 单元测试:@SpringBootTest、@Value 注入、@MockBean 使用实战与陷阱
  • 计算机网络八股——HTTP协议与HTTPS协议
  • Python爬虫-爬取猫眼演出数据