最后再来分析high级别的代码:
这里首先有一条语句需要理解:
$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1); |
在这条语句里,首先利用strrpos() 函数来查找“.”在变量$uploaded_name中出现的位置,然后将得到的数值加1,最后利用substr()函数从变量$uploaded_name的指定位置截取部分字符串。
总之,这条语句的作用就是从我们所上传的文件名中截取出扩展名部分。
接下来就用if语句来判断这个扩展名是否是大写或小写的jpg/jpeg,如果不是的话则不允许上传,因而这里就是定义了一份白名单,这也是安全性比较高的一种防御措施。
最后总结一下,如果要挖掘上传漏洞,那么就可以在网页代码中搜索$_FILES这个用于接收上传文件的变量,或是搜索move_uploaded_file这个用于执行上传操作的函数,然后再分析是否采取了过滤措施。
上传漏洞作为一种主流的***方式,其形式是非常多样的,单纯就DVWA中这种上传漏洞而言,定义白名单就是一种不错的防御方式。
转载于:https://blog.51cto.com/yttitan/1732397