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类函数的使用,懒得码字了,用一下大佬的打法
二.绕过open_basedir
题目[[羊城杯 2020]Break the wall | NSSCTF](https://www.nssctf.cn/problem/1420) |
样本太少了,后续补充。。。
三.无数+无参RCE
1.自增码
还是构造
[从CTFShowRCE挑战]中学习自增构造webshell-腾讯云开发者社区-腾讯云