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

攻防世界题目练习——Web引导模式(三)(持续更新)

题目目录

    • 1. mfw
    • 2. Cat
    • 3.
    • 4.
    • 5.

1. mfw

进去看到网页和页面内容如下:
在这里插入图片描述
看到url的参数 ?page=about ,我以为是文件包含什么的,反复试了几次,想用 …/…/…/…/etc/passwd ,但是发现.似乎被过滤了,实在不知道怎么做了,于是找了几篇解题博客:
攻防世界-mfw-(详细操作)做题笔记
攻防世界----mfw
看了博客才知道,存在一种git源码泄露漏洞,相关知识见博客:WEB安全-常见源码泄露 | wh1te。

git源码泄露是:
当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。
利用方式:
github上的githack可以把整个.git备份的文件下载下来。它能解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码。
于是用url/.git访问,可以看到显示了许多文件,可能是源代码文件。
在这里插入图片描述
看了几个目录没有看到flag相关的。
博客说用githacker下载文件,于是我按照博客攻防世界-mfw-(详细操作)做题笔记中使用githacker下载文件时的路径在我的kali中找githacker,没找到,于是参考别的博客去下载githack:
GitHack在kali Linux环境下的下载与安装
下载完成后,因为看到前面的参考博客里是用的__init__.py文件来下载,于是在我下载的githacker-master的目录下的lib目录中找到了这个文件,按照那篇博客上的命令还是没法下载。想到那篇教下载的博客上最后的步骤:

python2 GitHack.py http://challenge-efb678740fb6553d.sandbox.ctfhub.com:10800/.git

用的是python2 GitHack.py url/.git,于是用这个命令尝试,终于成功了,下载存放的位置在GitHacker-master的dist目录下,为了方便我把文件夹更名为了GitHack,如下图:
在这里插入图片描述
可以看到里面有一个文件flag.php,打开看里面什么都没看到。里面唯一有有价值信息的就是index.php文件(和templates文件夹在同一目录下,上图未展示),打开查看如下:
在这里插入图片描述
可以看到红框框出的部分是两个assert断言,其中第一个的注释"I heard ‘…’ is dangerous!",以及assert中将 ‘$file’ 和 ‘…’ 做匹配,可以解释我在一开始发现的.被过滤掉了的情况,第二个assert是判断文件是否存在。

我们直接访问flag.php的话是可以访问的,但是没有内容显示。
在这里插入图片描述
我们要绕过第一个assert的判断。
在源码中可以看到如下:

$file = "templates/" . $page . ".php";assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

将$file的值代入进去就是:

assert("strpos('templates/$page.php', '..') === false") or die("Detected hacking attempt!");

我们需要让后面和 ‘…’ 进行比较的部分失效,就需要用到 // 将后面的内容注释掉,并用')来与strpos()函数的前半部分('templates/进行闭合。
这里我将几篇参考博客结合起来看:
博客1:攻防世界----mfw
博客2:【攻防世界】十八、mfw
博客3:攻防世界-mfw-(详细操作)做题笔记

在博客3讲的拼接不是很详细,没太懂这样构造之后在代码中是怎么拼接的,于是看了博客1.
博客1对于拼接的替换构造讲的挺清楚,但是我不理解为什么这个博主构造的拼接内容templates前面为什么会有两个单引号:
在这里插入图片描述

于是我又查看了博客2,这个构造的拼接后的内容和我理解的一样:
在这里插入图片描述

在博客3的评论区中我了解到,这里的.是链式拼接:
在这里插入图片描述

在返回的源码中可以看到flag:
在这里插入图片描述

在linux下没法直接看到flag.php的内容,猜测可能是因为php文件有些内容要在网页中才能显示?
在这里插入图片描述

再来尝试一下用or system('cat templates/flag.php');//,发现用or system只显示了一次flag,如下图:
在这里插入图片描述

博客1对于这个的解释是这样的,但我还是没看懂为什么:
在这里插入图片描述
但是我仍然有个疑问,在page=').system('cat templates/flag.php');//拼接之后,assert的")也被注释掉了,这样为什么可以正常执行system命令呢。
所以我想试试page=')) or system('cat templates/flag.php');//,用两个括号,把assert也闭合掉看看。
失败了,不行诶,有点没搞懂。
又仔细看了看博客1,说的是 “利用assert()函数执行cat ./template/flag.php获得flag” 。但是注释符不是会把后面的内容全部注释掉吗,这样的话怎么利用assert()函数呢,真的迷惑,有没有好心人看到后教教我SOS

2. Cat

题目:
在这里插入图片描述
看了看网页源码没有什么发现,于是抓包查看:
在这里插入图片描述
抓包也没有看到什么有用的信息,只看到了是get方式的请求,参数名为 “url” 。尝试了一下也不是sql注入。
看看别人的解析吧,参考博客如下:
[CTF题目总结-web篇]攻防世界:Cat
以及攻防世界里本题的用户darkless的WP

根据几篇题解来看,我们需要转换思路入手,这里要求输入的内容是一个域名,那么此时想到的不应该是普通的sql注入,域名是ip地址的映射,输入ip地址意味着访问的动作,这时应想到的是命令执行。
一个访问ip的命令要可以执行,那么我们输入的这个域名应该是有效的可以访问的。
我先输入了www.baidu.com,无事发生。
WriteUp中发现这里是可以输入ip地址的,于是我又尝试了114.114.114.114。
在这里插入图片描述
包丢失但是有回显。
题解里的思路是输入127.0.0.1来进行测试(这是一个需要记住的思路),通过输入127.0.0.1,我们既可以看到回显,又可以看到返回的有用的信息,如下图:
在这里插入图片描述
可以看到本题中Submit提交执行的是 ping 命令,并且ping通后返回了一条路径。
因此我们在这里考虑尝试命令拼接执行,但是会发现尝试的拼接符都会被过滤。
然后题解博客里都是用FUZZ来进行测试,根据报文返回长度看哪些字符没被过滤,但是我不知道哪种fuzz工具好用,并且感觉BurpSuite也可以做到这个功能,所以这里我就用BurpSuite爆破一下。
爆破我得录入所有可见的ascii码字符,但网上全是表格,所以写了个脚本T_T:

s = ""
for c in range(32, 127):s += chr(c)s += "\n"
print(s)
'''(空格)
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
'''

把除了字母之外的其他字符复制进去进行爆破:
在这里插入图片描述
可以看到这些报文返回长度为458的是没有出现报错,也就是没有被过滤的字符:
在这里插入图片描述
然后题解里说注意到了输入的数据采用url编码,但是我真的很迷惑啊,感觉有时候输入的被url编码了有的又没有,啊啊啊啊啊,烦人。
然后就开始用url编码来试探了,就是输入了超过ascii编码的最大值的url编码后,页面就会报错,那就把这个也当作一个试探的小技巧吧。
只能直接在url里输入,不能在提交框里。
在这里插入图片描述

3.

4.

5.

相关文章:

攻防世界题目练习——Web引导模式(三)(持续更新)

题目目录 1. mfw2. Cat3.4.5. 1. mfw 进去看到网页和页面内容如下&#xff1a; 看到url的参数 ?pageabout &#xff0c;我以为是文件包含什么的&#xff0c;反复试了几次&#xff0c;想用 …/…/…/…/etc/passwd &#xff0c;但是发现.似乎被过滤了&#xff0c;实在不知道怎…...

Python制作PDF转Word工具(Tkinter+pdf2docx)

一、效果样式 二、核心点 1. 使用pdf2docx完成PDF转换Word 安装pdf2docx可能会报错&#xff0c;安装完成引入from pdf2docx import Converter运行也可能报错&#xff0c;可以根据报错提示看缺少那些库&#xff0c;先卸载pip uninstall xxx,使用pip install python-docx -i htt…...

有哪些手段可以优化 CSS, 提高性能

CSS优化是Web开发中提高性能和用户体验的关键部分。下面详细解释一些CSS优化的方法&#xff0c;以提高性能&#xff1a; 合并和压缩CSS文件: 合并文件&#xff1a;将多个CSS文件合并成一个&#xff0c;以减少HTTP请求次数。这可以通过构建工具&#xff08;如Webpack&#xff09…...

ARM可用的可信固件项目简介

安全之安全(security)博客目录导读 目录 一、TrustedFirmware-A (TF-A) 二、MCUboot 三、TrustedFirmware-M (TF-M) 四、TF-RMM 五、OP-TEE 六、Mbed TLS 七、Hafnium 八、Trusted Services 九、Open CI 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现…...

信创办公–基于WPS的Word最佳实践系列 (图文环绕方式)

信创办公–基于WPS的Word最佳实践系列 &#xff08;图文环绕方式&#xff09; 目录 应用背景操作步骤1、 打开布局选项中图文环绕方式的方法2、 图文环绕三大类型 应用背景 在Word中&#xff0c;对文字和图片进行排版时&#xff0c;采用各种不同的图片与文字组合效果能够使页面…...

Naive UI数据表格分页pageCount配置没效果

吐槽&#xff1a;因为naive-ui是基于vue3&#xff0c;所以目前的组件资料是少之又少啊&#xff0c;虽然好用&#xff0c;但感觉没有特别的普及。 背景&#xff1a;记得1年前我第一次碰到了这个问题&#xff0c;在列表里使用:pagination分页&#xff0c;怎么都不显示页码&#…...

Kibana Discover数据查询

步骤1&#xff1a;打开管理页面(Management) 步骤2&#xff1a; 因为前面的章节导入航班数据的时候&#xff0c;自动创建了一个名字叫kibana_sample_data_flights的航班数据索引&#xff0c;如果我们只想搜索kibana_sample_data_flights索引的数据&#xff0c;则不需要通配符&…...

笔记 | 编程经验谈:如何正确的使用内存

笔记 | 编程经验谈:如何正确的使用内存 首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种: 1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 2.在栈上创建。在执行函数时,函数内…...

C语言入门-1.1 C语言概述

想要学好一门计算机编程语言&#xff0c;就和谈一个女朋友是一样的&#xff0c;需要对其深入了解。 1、计算机语言 &#xff08;1&#xff09;什么是计算机语言&#xff1f; 顾名思义&#xff0c;就是计算机之间交流的语言&#xff0c;就和人一样&#xff0c;咱们都是使用普通…...

周记之学习总结

你在人群中看到的每一个耀眼的女孩&#xff0c;都是踩着刀尖过来的。你如履平地般地舒适坦然&#xff0c;当然不配拥有任何光芒&#xff1b; 10.11-10.12 思来想去还是不舍得&#xff0c;搞了一下这个jwt&#xff0c;看了很多视频和博客&#xff0c;一直没看懂&#xff0c;两…...

程序设计:C++ 一个可以放入共享内存的string模板

共享内存由于是多进程共享的&#xff0c;里面的数据不适合包含指针&#xff0c;因为共享内存在不同进程里的地址并不相同。尽管可以在连接共享内存时指定连接地址&#xff0c;但是&#xff0c;这样做限制太多&#xff1a; 不同硬件、系统这个地址可能不一样&#xff0c;没有通…...

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09; 2024 3rd International Conference on Applied Mechanics and Advanced Materials&#xff08;ICAMAM 2024&#xff09; 第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09…...

Python -- I/O编程

文章目录 一、文件读写1. 读文件2. 二进制文件3. 字符编码4. 写文件 二、StringIO和BytesIO三、操作文件和目录1. 操作系统命令2. 操作文件 四、序列化五、 JSON六、异步IO1. 协程2. asyncioasync/awaitaiohttp 一、文件读写 Python内置了读写文件的函数&#xff0c;用法和C是…...

langchain入门指南和实战

简单介绍 LangChain 是一个开源的语言模型集成框架&#xff0c;旨在简化使用大型语言模型&#xff08;LLM&#xff09;创建应用程序的过程。 利用它可以让开发者使用语言模型来实现各种复杂的任务&#xff0c;例如文本到图像的生成、文档问答、聊天机器人、 调用特定的SaaS服务…...

群晖synology DSM 7.2设置钉钉Webhooks通知

现在越来越多的小伙伴都有了自己的Nas系统&#xff0c;为了更加方便的接收Nas的消息&#xff0c;这篇文章带着大家一起配置一个钉钉&#xff08;机器人&#xff09;即时消息通知 首先登录钉钉的开放平台&#xff1a;开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…...

STP生成树协议详解

一、STP作用 如果链路断开或节点故障&#xff0c;那么互联的设备就无法正常通信了&#xff0c;这类网络问题叫做单点故障。没有备份的链路或节点&#xff0c;出现故障会直接断网。如果要提供 724 小时不间断的服务&#xff0c;那就需要在网络中提前部署冗余。避免出现单点故障…...

CentOS 6/7/8 操作系统镜像下载

CentOS Mirrors List ​编辑 DownloadAbout About CentOS Frequently Asked Questions (FAQs) Special Interest Groups (SIGs) CentOS Variants Governance Community Contribute Forums Mailing Lists IRC Calendar & IRC Meeting List Planet Submit a Bug Stories Doc…...

中国社科院与美国杜兰大学金融管理硕士---不将就的人生

“万般皆下品&#xff0c;惟有读书高”、“书中自有颜如玉&#xff0c;书中自有黄金屋”&#xff0c;古往今来&#xff0c;读书的好处为人们所重视。从而想拿到学历没有知识的沉淀&#xff0c;没有一定的学识水平&#xff0c;又怎么能拿到含金量颇高的学历呢&#xff1f;退一步…...

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

《iTOP-RK3568开发板驱动开发指南》手册文档更新&#xff0c;手册内容对应视频教程&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好&#xff01;内核源码 第3章 …...

Jmeter测试关联接口

Jmeter用于接口测试时&#xff0c;后一个接口经常需要用到前一次接口返回的结果&#xff0c;本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式&#xff0c;可供参考。 一、实例场景&#xff1a; 有如下两个接口&#xff0c;通过正则表达式提取器&#xff0c;将第一…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...