nnonkey k1n9的博客

当你为错过太阳而哭泣时,你也要再错过群星了——泰戈尔​

[FSCTF 2023]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注入,但是*被过滤,那就//注释替换

然后很多过滤,但是竟然没有过滤system

那就是命令设置为"}system($_GET[1]);//";,细节就是不需要system不需要'包裹,必须双引号闭合,编码一次就够了

然后不能执行phpinfo,

当然如果过滤了system,我们可以文件包含配合伪协议

require(base64_decode(ZmlsZTovLy9mbGFn));
                 //require(file:///flag)
本原创文章未经允许不得转载 | 当前页面:nnonkey k1n9的博客 » [FSCTF 2023]CanCanNeed

评论