命令执行中cat 和tac的区别
正则过滤了flag,我们可以使用通配符 '*' 或者匹配符 '?' 绕过
c?=syetem('ls ');//查看一下文件 //存在两个文件,flag.php index.php
尝试查看flag.php ,?c=system('cat f*');发现页面没有显示,使用?c=system('tac f*');正常显示
首先查找一下cat 和tac 命令的区别
cat:命令cat用于查看一个文件的内容并显示在屏幕上,cat后面可以不加任何选项直接跟文件名。
tac:命令tac也是把文件的内容显示在屏幕上,只不过是先显示最后一行,然后显示倒数第二行,最后才显示第一行。
而我们题目flag存在一个php文件中,如果我我们使用cat查看的话,那么还是按照<?php格式执行,而其中没有输出语句echo 等,无法输出flag
而tac命令刚好可以通过倒序输出,而避开<?php,使得内容能够显示出来,此时不再是php语句了