DVWA文件上传笔记
写在前面
首先感谢大佬网运少年在kali上配置DVWA的文章,完美解决了我的问题,相见恨晚
7.7、kali linux环境下搭建DVWA
7.8、linux 搭建dvwa时创建数据库显示Access denied for user‘dvwa‘@localhost (using password: YES)的解决办法
第一关
查看原始代码后发现对文件没有任何过滤,我们随意上传一个一句话木马
编写一个一句话木马,并将后缀名改为允许通过的内容
成功上传
手动连接,检测连通性,发现成功
第二关
可以看到源代码只是对文件后缀进行了过滤
成功上传
用burp suit测试发现可以正常连接
第三关
查看源码好像还是对文件类型进行的限制,将第二关的图片传上去,发现报错了,所以一定有其他的障碍,这个障碍就是 getimagesize检测文件的真实类型
使用burp suit进行抓包得到如下情况,可以看到,这一关对指定上传文件的 MIME 类型。这个 MIME 类型表明上传的文件是一个 JPEG 图像文件。
采用文件包含漏洞将一句话木马嵌入到图片的后面,得到一个新的图片
(ps:得到这样的提示是因为使用的图片太大了,源码中第17行限制了图片大小)
选取小图进行合成
成功上传
第四关
主要采取了四种过滤方法:
1、不信任报文,将文件生成独一无二的id后,做md5
2、对上传图片的真实类型做过滤
3、删除文件中注释部分,在合成新的图片,攻击者没有办法将木马写到注释中去,更不可能写道正文 getimagesize( $uploaded_tmp ) ) 会不满足
3、将原始图片删除掉,将恶意连接的可能彻底断绝,达到了安全的效果
可以看到当我上传一个正常的图片时,图片名会被转变为hash值另存到网站中