Security Level: Low#1代码分析 $_FILES变量——用于获取上传文件的各种信息;$_FILES[ ‘uploaded’ ][ ‘name’ ],获取客户端文件的原名称;$ FILES[ ‘uploaded’ ][´tmp_name’]“,获取文件被上传后在服务端存储的临时文件名;$target_path DVWA_WEB_PAGE_TO_ROOT.“haackable/uploads/”; 指定文件上传路径为网站根目录/hackablee/uploads”t a r g e t p a t h target_path targetp​athtarget_path. basename($_FILES[‘uploaded’][‘name’]) 指定上传之后的文件名及保存路径;#2 编写一个PHP脚本包含一句话木马将其保存为shell.php- 直接通过表单上传通过浏览器直接访问服务器的PHP解析器会执行改脚本如图证明了缺乏后端文件检查具有任意文件上传隐患。Security Level: Medium#1代码分析$_FILES[ ‘uploaded’ ][ ‘type’ ] 获取上传文件的MIME类型(即content-Type 并不是由服务器检测文件的出的而是由浏览器根据文件的后缀名自动生成);MIME类型 ——网络传输中用来表示文件格式的标准。在文件上传时浏览器会根据后端表端或一直扩展名生成标识并放入HTTP请求头中常见的mime类型: 1网页 .html | 2普通文本 .txt | 3GIF图像 .gif | 4JPEG图像.jpeg/.jpg;#2 漏洞利用与绕过本关卡只检查了声明的类型而未校验文件实际后缀和内容所以Bp拦截后原来Content-Type: application/x-php, 修改成image/jpeg, 直接放行如图Security Level: High#1 代码分析后端引入严格的后缀名白名单、图片大小100000字节大约96.7KB;#2 绕过后端getimagesize()校验的方法 制作图片马——将PHP代码嵌入到一张合法图片的文件尾部后缀是.jpg, 且文件头合法能够成功上传首先在终端直接将一句话木马写入图片文件- 代码验证- 验证图片大小如下图手搓迷你图片—追加恶意代码- 再次确认大小和内容mini.jpg成功写入服务器但是它是.JPG后缀直接访问并不会执行必须配合网站的文件包含漏洞才能真正激活