DVWA靶机
LOW
<?php phpinfo() ?>

上传文件



Medium级别

修改Content-Type: application/octet-stream的值为jpg的格式为Content-Type: image/jpeg

访问文件http://localhost/DVWA-master/hackable/uploads/1.php

high级别
图片马
由于后台验证了像素,所以要有图片,我们把php文件和图片文件合成一个文件
在cmd中进行 /b表示二进制 /a表示ascii码
先进入桌面
cd Desktop
copy 1.jpg /b + 1.php /a 2.jpg


解码文件 .htaccess
我们先写文件
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
文件我们要保存成.htaccess,没有文件名,我们bp改包
抓包修改1.txt为.htaccess



现在访问文件http://localhost/DVWA-master/hackable/uploads/2.jpg

upload-labs靶机
第一关
查看源码

是前端绕过,我们可以禁用js
在浏览器里打开about:config
把红色的选项改为false


访问文件http://localhost/upload-labs-master/upload//1.php

第二关
只对文件的MIME进行的验证,改包
把application/octet-stream改为image/jpeg


第三关
更改文件名绕过
php相同的有php1 php2 php3 php4 php5 phtml pht

第四关
把1.php的后缀改为jpg绕过,在上传解码文件.htaccess

<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
上传.htaccess

第五关
文件后缀大小写绕过

第六关
文件后缀加空格绕过

第七关
文件后缀加[.]绕过

第八关
文件后缀加::$DATA绕过
访问时不加::$DATA

第九关
由于后台代码是先删除两端的空格,然后删除末尾的点,还有一些其他的,最后在删除两端的空格。我们可以写[. .](点 空格 点),代码是先删两端的空格,这里,没有删掉,然后删末尾的点,删掉了,剩点和空格,最后删除两端的空格,就剩点了,绕过了

第十关
双写

第十一关
00截断
一般用在文件被上传到一个目录下面,我们在目录下面写上文件名1.php,然后在用00截断,上传的文件名我们用白名单能上传的格式(jpg),由于用了00截断,其实保存在目录下的文件名是1.php,而不是jpg
源文件

修改后

进行%00的url解码

第十二关
00截断
源文件

第十三关
图片马(jpg)
第十四关
图片马(png)
第十五关
图片马(png)
第十六关
二次渲染 传个gif的动态图