0x01 Resonse.BinaryWrite
Response.BinaryWrite是.NET中用于将字节数据发送到客户端的方法,比如直接输出图像、音频或视频等二进制数据到客户端。下面是Response.BinaryWrite的代码示例,复现存在文件下载漏洞的场景,代码如下
string fileName = Request.QueryString["file"];
string filePath = Path.Combine(Server.MapPath("~/Uploads/"), fileName);
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
上述代码读取文件创建一个FileStream 文件流,从文件流中读取文件内容并将存储在字节数组 bytes中。最后通过Response.BinaryWrite(bytes) 将文件的字节数组内容写入 HTTP 响应流发送到客户端。提交file参数 "../web.config",成功读取敏感文件内容。如下图
原文始发于微信公众号(dotNet安全矩阵):.NET代码审计之任意文件下载-BinaryWrite
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论