一、问题描述
页面报错,没法下载
二、问题分析
1.初步分析
通过查看相关代码可以了解到文件下载的过程如下:
取到下载链接中的mid参数
对mid先后进行url解码和base64解码
将解码后的字符串按"|"进行分隔
判断得到的数组是否存在第二个元素,不存在会返回404,存在则会利用分隔得到的两个值进行下载
其中分隔得到的两个值分别是mid和filename
报错下载链接:
http://adm.apply.wechat.com/admin/index.php/updown/download_file/?mid=YjBhNDZlNDVhMjk+MGY1ZTFjYTE4ZjI0MDYwNDMyMWN80JjQn1%2FQlNCy0L7RgNC90LjQul%2FQ
mid:
YjBhNDZlNDVhMjk+MGY1ZTFjYTE4ZjI0MDYwNDMyMWN80JjQn1%2FQlNCy0L7RgNC90LjQul%2FQ
对报错链接进行上述步骤,发现解码后的字符是一堆乱码,并不包含"|":
url解码:
YjBhNDZlNDVhMjk MGY1ZTFjYTE4ZjI0MDYwNDMyMWN80JjQn1/QlNCy0L7RgNC90LjQul/Q
base64解码:
b0a46e45a29YLX،N
̌Xߴ&4'״%4,/`4/t.4.
因此报错,无法下载
为什么其他用户上传的文件可以下载,这个却不能下载?
这是一个什么文件?下载链接中的mid为什么会错?
2.报错的文件是什么
要找到用户上传的文件,需要收集一些信息
OA注册邮箱:XXX@gmail.com
申请时间:2017-10-11
注册IP:XX.XX.XX.XX
查看2017.10.11的日志发现用户上传的文件目录:
"\/data\/XXX\/upload_files\/\u0418\u041f_\u0414\u0432\u043e\u0440\u043d\u0438\u043a_\u0420\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u044b.docx"
文件名经过unicode编码,转码之后:
ИП_Дворник_Реквизиты.docx
还有一个是一样的文件:
ИП_Дворник_Реквизиты1.docx