不管是学什么,最重要的是要明白他的原理和思路。只要弄清楚这两个后面的还是挺简单的,这个靶场还考核了一定的代码阅读理解能力,下面让我们冲冲冲!!!!
Pass-02
先看代码
代码中的第一个循环是判断你有没有点击上传按钮,如果有进入下一个循环。file_exists判断的是声明的上传目录是否存在,如果存在就执行下面的上传验证。最重要的来了,这一关考核的是黑名单验证,所谓的黑名单就是除了黑名单里面的东西之外其他的都能上传。这一关禁用上传的脚本后缀是asp、aspx、php、jsp。trim函数是用来把获取过来的文件名中的空格给删除掉,deldot函数删除文件名末尾点防止多后缀名欺骗,比如说你上传1.jpg.png.php,他接受的是1.jpg但是他是以最后一个. 为准也就是说他最终上传上去的是1.php,strrchr函数是分割字符,这里的作用是把.前面的东西删除掉只剩下后缀名(得到你文件的真实后缀),strtlolwer函数把真实后缀名转为小写,str_ireplace函数是把::$DATA替换为空,最后再用trim函数进行空格过滤。这一关看代码其实过滤写的很好,唯一薄弱的地方就是禁止上传的脚本后缀那里。所以我们这一关的思路和下面的思路是怎么样才能让代码检测不出我们上传的后门不是黑名单里面禁止的和正常执行出后门代码。
方法一:
特殊解析后缀绕过
我们知道在apache服务器是能够使用php解析.php3、.php5和phtm的,所以关于其他格式是狗能执