命令执行
绕过技巧
主要还是用题来说吧,基本都是 ctfshow 的
1.查看文件的几种方式
tac | more | less | tail | sort | tac | cat | head | od | expand | nl | echo
echo:在 PHP 中,可以使用反引号 ``或者 shell_exec 函数来执行命令并将输出作为字符串返回,然后使用 echo 命令将字符串输出到浏览器或命令行终端。比如echo ‘ls’或者echo shell_exec(‘ls -l’)
more:将文件内容分页显示
less:和more类似,但更强大,支持向前和向后翻页、搜索等功能
head:显示文件的前几行
tail:显示文件的后几行
tac:与 cat 刚好相反从文件的最后一行向前列出内容
nl:输出文件内容并显示行号
sort:对文件内容进行排序,默认按照字母表顺序进行排序,可以使用 -n 参数按照数字大小排序
od:以八进制或十六进制形式显示文件内容
expand:将文件中的制表符转换为空格
例子:
#web30
<?php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
?>
这题过滤了 system 需要用另外一种方式去让 eval 执行命令,我们可以用
readfile()
当 eval 命令执行的时候,system 被 ban 了,就可以用这个,例如 readfile(‘./../../../../flag’)