Mimikyu靶场刷题记录
目录
靶场地址: 综合漏洞练习靶场 - 极核::CTF
Pass01 Source
Pass02 Response
Pass03 Get
Pass04 Robots
Pass05 Backup
Pass06 Cookie
Pass07 HTML
整体结构
元数据部分
页面内容
关于 disabled 属性
pass08 xff_referer
pass09 PHP
一、代码功能概述
二、代码逐行分析
pass10 weak_auth
pass11 Webshell
pass12 rce
靶场地址: 综合漏洞练习靶场 - 极核::CTF
Pass01 Source
在网页源代码中找到flag
Pass02 Response
打开网页,发现一个英文单词,翻译一下是主页的意思,然后翻看网页源代码什么也没有发现。
然后查看url发现结尾是inbex.php很别扭,一般都是index.php。
将url修改之后回车发现又变成了inbex.php,感觉这里应该是有问题。
扫描网页目录,确实有index.php.
用bp抓包改包,将inbex.php修改为index.php然后发送得到flag。
Pass03 Get
根据题目要求直接在末尾添加?1=2,直接得到flag。
Pass04 Robots
刚进入页面一片空白,然后根据题目是robots,在url后面输入robots.txt试试。
输入robots.txt得到下面信息
然后在f1ag_1s_h3re.php里面拿到flag。
Pass05 Backup
经过一顿摸索,备份文件名是www.zip
下载得到flag
Pass06 Cookie
打开网页,查看源代码啥也没发现,根据题目,猜测跟cookie有关。
使用bp抓包看一下
看到有个cookie.php,试试在url后面加上cookie.php.
发现有个提示,再抓包看一下。重新发送看到了flag.
Pass07 HTML
根据题目提示,查看网页源代码。
以下是对这段 HTML 代码的详细分析:
整体结构
- DOCTYPE 声明:
<!DOCTYPE html>
是文档类型声明,表明该文档是一个 HTML5 文档。
- HTML 元素:
<html lang="en">
是 HTML 文档的根元素,lang="en"
属性指定文档的语言为英语。<head>
元素包含了文档的元数据,如字符编码、视口设置和页面标题。<body>
元素包含了页面的主要内容,用户可以看到和交互的部分。
元数据部分
- 字符编码:
<meta charset="UTF-8">
定义了页面使用的字符编码为 UTF-8,确保页面可以正确显示各种字符,包括特殊字符和多语言字符。
- 兼容性:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
用于设置 Internet Explorer 的兼容模式,IE=edge
表示使用最新的渲染引擎版本。
- 视口设置:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
是为了使页面在移动设备上有更好的显示效果,将视口宽度设置为设备的宽度,并将初始缩放比例设置为 1.0。
页面内容
- 页面标题:
<title>disable</title>
定义了页面的标题,在浏览器的标签栏中显示为 "disable"。
- 页面内容:
<h3>为什么这个按钮不能按呀??</h3>
是一个三级标题,向用户提出一个问题。
- 表单部分:
<form action="" method="post">
开始一个表单元素,action=""
表示表单提交的目标 URL 为空,默认会提交到当前页面,method="post"
表示使用 POST 方法提交表单数据。<input disabled type="submit" value="flag" name="auth" />
是一个提交按钮,但它被设置为disabled
。
关于 disabled
属性
- 属性解释:
disabled
是input
元素的一个属性,当该属性存在时,元素将被禁用,用户无法与之交互,包括点击按钮、输入文本等操作。在这个例子中,由于disabled
属性被添加到了提交按钮上,用户不能点击该按钮,所以无法提交表单。
- 可能的意图和修改建议:
- 可能是开发者在开发过程中暂时禁用了这个按钮,比如在某些条件未满足时不允许用户提交表单。如果想让按钮可点击,可以移除
disabled
属性。
- 可能是开发者在开发过程中暂时禁用了这个按钮,比如在某些条件未满足时不允许用户提交表单。如果想让按钮可点击,可以移除
然后按键即可使用,点击后得到flag
pass08 xff_referer
根据信息提示要伪造ip地址 x-forwarded-for,进行抓包改包。
pass09 PHP
打开是一段php代码。
以下是对这段 PHP 代码的详细分析:
一、代码功能概述
- 这段 PHP 代码是一个简单的 Web 应用程序,它可能用于测试或展示 PHP 中的一些漏洞。代码中包含了两个变量
$a
和$b
,通过GET
方法从 URL 中获取,并根据对这两个变量的条件判断,决定是否输出$flag1
或$flag2
。
二、代码逐行分析
show_source(__FILE__);
:- 功能:使用
show_source
函数显示当前文件的源代码。这可能是为了代码审计或教学目的,让用户看到代码本身。 - 风险:在生产环境中,将源代码暴露给用户可能会带来安全风险,因为这可能会让攻击者更容易发现代码中的漏洞。
- 功能:使用
include("config.php");
:- 功能:使用
include
函数包含了config.php
文件。通常,config.php
文件可能包含一些重要的配置信息,如数据库连接信息、敏感常量等。 - 风险:如果
config.php
文件不存在或无法正确包含,可能会导致 PHP 抛出警告或错误。同时,如果config.php
被攻击者篡改,可能会引入安全风险,如代码注入。
- 功能:使用
$a=@$_GET['a'];
和$b=@$_GET['b'];
:- 功能:使用
$_GET
超全局变量从 URL 中获取名为a
和b
的参数,并将它们存储在$a
和$b
变量中。@
符号用于抑制错误信息,防止在参数未提供时产生未定义变量的警告。 - 风险:直接使用
$_GET
变量且不进行过滤和验证,可能会导致用户输入的恶意数据影响程序的执行,如 SQL 注入、代码注入等。
- 功能:使用
if($a==0 and $a){
:- 功能:检查
$a
是否等于 0 并且$a
同时为true
。这是一个逻辑漏洞,因为在 PHP 中,0 == '0'
为true
,而0
作为一个整数,在逻辑判断中也会被认为是false
,但当$a
是字符串'0'
时,这个条件会满足。 - 风险:这是一个逻辑漏洞,攻击者可以通过将
a
参数设置为'0'
来满足此条件,从而绕过这个判断,获取$flag1
。
- 功能:检查
echo $flag1;
:- 功能:如果上述条件满足,将输出
$flag1
的值。 - 风险:如果
$flag1
是敏感信息,如系统密码、API 密钥等,那么这个信息可能会被攻击者获取。
- 功能:如果上述条件满足,将输出
if(is_numeric($b)){
:- 功能:使用
is_numeric
函数检查$b
是否是一个数字(包括整数和浮点数)。 - 风险:仅检查
$b
是否为数字可能不够,因为一些特殊情况,如十六进制数(如0x1234
)、科学计数法(如1e10
)等也会被认为是数字,可能会绕过某些检查。
- 功能:使用
exit();
:- 功能:如果
$b
是数字,程序将在此处终止。 - 风险:如果
$b
是数字,将不会继续执行后面的代码,可能导致正常功能无法使用。
- 功能:如果
if($b>1234){
:- 功能:检查
$b
是否大于 1234。 - 风险:如果
$b
不是数字,可能会导致比较时出现意外结果,因为 PHP 会尝试将$b
转换为数字。例如,'abc'
会被转换为 0,而'1235abc'
会被转换为 1235。
- 功能:检查
echo $flag2;
:- 功能:如果
$b
大于 1234,将输出$flag2
的值。 - 风险:同
$flag1
,可能会导致敏感信息泄露。
- 功能:如果
在url后面加上?a='0'得到上半段flag
在url后面加上?b=1235a得到下半段flag
pass10 weak_auth
根据题目提示,应该是弱口令密码,抓包进行爆破。在爆破之前也试了试万能密码,失败了。
添加弱口令字典
然后开始爆破,得到flag
得到密码1234567,登录得到flag。
pass11 Webshell
根据页面内容以及题目,猜测需要使用蚁剑或者菜刀,哥斯拉等webshell管理工具。
连接测试成功,然后就是进入后台目录去查找flag。
pass12 rce
这个是别人写的wp,使用的是Windows系统命令得到的flag。
ping 的测试
ping baidu.com
ping127.0.0.1
利用ipconfig查询,可以看到操作系统就是我的主机windows
查询文件,看到flag.txt
在windows中查看文件的命令时type,一百度就知道
我所做的这个靶场使用的是linux指令。
127.0.0.1|cat flag.txt