WAF-bypass 一些函数(RCE)

Focus on the funcation usage

Posted by sword Reforge on April 15, 2025

WAF-bypass 一些函数(RCE)

归档

一.基于函数绕过

拿一题cancanbypass(致敬传奇ccb领域大神)

<?php
$tgctf2025=$_GET['tgctf2025'];
if(!preg_match("/0|1|[3-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\|localeconv|pos|current|print|var|dump|getallheaders|get|defined|str|split|spl|autoload|extensions|eval|phpversion|floor|sqrt|tan|cosh|sinh|ceil|chr|dir|getcwd|getallheaders|end|next|prev|reset|each|pos|current|array|reverse|pop|rand|flip|flip|rand|content|echo|readfile|highlight|show|source|file|assert/i", $tgctf2025)){
    //hint:i大小写兼容平等过滤
    eval($tgctf2025);
}
else{
    die('(╯‵□′)╯炸弹!•••*~●');
}
highlight_file(__FILE__);

简单地对函数进行分类

数组操作函数
pos / current:获取数组当前元素。

end / next / prev / reset:移动数组内部指针。

each:返回当前键值对并移动指针(已弃用)。

array:创建数组。

reverse:反转数组(如 array_reverse)。

pop:弹出数组末尾元素(如 array_pop)。

flip:交换键值(如 array_flip)。

输出函数
print / echo:输出字符串。

readfile:读取文件内容并直接输出。

highlight / show / source:语法高亮显示代码(如 highlight_file)。

var + dump:组合为 var_dump,输出变量详细信息。

数学函数
floor / ceil:向下/向上取整。

sqrt:平方根。

tan / cosh / sinh:三角函数。

rand:生成随机数。

字符串处理函数
split:用正则分割字符串(已弃用,建议 preg_split)。

chr:根据ASCII码返回字符。

str:泛指字符串处理函数(如 strlen、substr 等)。

文件系统函数
dir:遍历目录(如 opendir)。

getcwd:获取当前工作目录。

file:将文件读取到数组。

content:假设为 file_get_contents,读取文件内容。

PHP信息与配置
phpversion:获取PHP版本。

extensions:检查扩展是否加载(如 extension_loaded)。

HTTP相关函数
getallheaders:获取所有HTTP请求头。

get:假设为处理 $_GET 参数或类似操作。

变量处理与调试
defined:检查常量是否存在。

var_dump:输出变量结构信息。

assert:断言检查(也可执行代码,需谨慎)。

执行控制与危险函数
eval:执行字符串中的PHP代码(高危)。

assert:断言可能执行代码(潜在风险)。

自动加载与类相关
spl:标准PHP库(SPL)相关(如 spl_autoload_register)。

autoload:自动加载机制(如 __autoload)。

本地化与国际化
localeconv:获取本地化数字/货币格式信息。

还有未被re过滤的,有关session类函数的使用,懒得码字了,用一下大佬的打法

RCE篇之无参数rce - 学安全的小白 - 博客园

二.绕过open_basedir

题目[[羊城杯 2020]Break the wall NSSCTF](https://www.nssctf.cn/problem/1420)

样本太少了,后续补充。。。

三.无数+无参RCE

RCE篇之无数字字母rce - 学安全的小白 - 博客园

1.自增码

还是构造

[从CTFShowRCE挑战]中学习自增构造webshell-腾讯云开发者社区-腾讯云