关于ASP.net服务器的入侵方法(2)

.创建数据源的代码(代码在listdrivers.aspx.cs文件中):
//通过此方法返回一个集合形式的数据视图DataView
ICollection CreateDataSource() {
//定义内存中的数据表DataTable
DataTable dt = new DataTable();
//定义DataTable中的一行数据DataRow
DataRow dr;
/*向DataTable中增加一个列,格式:DataColumn("Column", type)
Column为数据列的名字,type为数据列的数据类型*/
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("drivers", typeof(string)));
dt.Columns.Add(new DataColumn("detail", typeof(string)));
//使用for循环将逻辑驱动器的名称以行的形式添加到数据表DataTable中
for (int i = 0; i < nNumOfDrives; i++) {
//定义新行
dr = dt.NewRow();
//对行中每列进行赋值,注意要与上边定义的DataTable的行相对应
dr[0] = i; //循环生成的序号
dr[1] = achDrives[i].ToString(); //逻辑驱动器的名称
dr[2] = "查看详情";
//向DataTable中添加行
dt.Rows.Add(dr);
}
//根据得到的DataTable生成自定义视图DataView
DataView dv = new DataView(dt);
//返回得到的视图DataView
return dv;
}
我们通过这个方法得到了一个包含所有我们需要的数据的数据视图DataView,我们只需要在此aspx页的Page_Load方法中将此数据视图绑定到DataGrid上就可以了。
数据绑定代码(代码在listdrivers.aspx.cs文件中):
/* 设置DataGrid的数据源DataSource为我们从CreateDataSource()方法得到的数据视图DataView */
DriversGrid.DataSource = CreateDataSource();
//将此DataGrid进行数据绑定
DriversGrid.DataBind();
通过上边介绍的几种主要方法我们就实现了获取系统信息和显示所有逻辑驱动器名称的功能,并且可以通过相应的链接进入下一个显示目录和文件名的程序listdir.aspx显示该逻辑驱动器下的所有目录和文件。
显示目录中所有子目录和文件的程序listdir.aspx
目录下有子目录和文件两种形式,必须分别对待。我们调用此程序本身对子目录进行列表显示,而文件我们需要调用showfile.aspx程序对文件的属性和内容进行显示。并且两者还有不同的删除方法,所以我们在这里设置了两个DataGrid,两个DataTable,两个DataView,分别处理和显示目录和文件。
显示和处理目录和文件的DataGrid的代码(代码在listdir.aspx文件):
显示目录或文件的序号和名称的数据列类似于listdrivers.aspx程序中的相应代码,这里就不再重复了。对于子目录和文件分别有各自的处理页面,所以需要导航到两个不同的页面,对于子目录,我们继续使用listdir.aspx程序对其下的子目录和文件进行列表显示:<asp:HyperLinkColumn DataNavigateUrlField="DirName"
DataNavigateUrlFormatString="listdir.aspx?dir={0}"
DataTextField="DirDetail"
HeaderText="详细信息"
Target="_new"
/>
对于文件,我们使用showfile.aspx程序显示其属性和内容:
<asp:HyperLinkColumn DataNavigateUrlField="FileName"
DataNavigateUrlFormatString="showfile.aspx?file={0}"
DataTextField="FileDetail"
HeaderText="详细信息"
Target="_new"
/>
在两个DataGrid(DirGrid,FileGrid)中我们分别设置了两个HyperLinkColumn列来导航到不同的处理页面。
在两个DataGrid中我们都使用了一个删除的按钮列:
<asp:ButtonColumn HeaderText="删除"
Text="删除"
CommandName="Delete"
/>
由于添加、更新、删除功能列都是DataGrid的默认模板列,所以可以在Vs.net中通过DataGrid的属性生成器自动添加此列。
获取上一页面所传递来的参数的代码:
因为在下面产生数据源的方法中需要使用由上一个页面传递过来的参数来确定目录和文件的名称,所以在页面的Page_Load方法里使用了下列代码:
strDir2List = Request.QueryString["dir"];
字符串strDir2List即传过来的目录名或文件名。
因为我们使用了两个DateGrid,就需要进行两次数据绑定,就有两个不同的生成数据源的方法。
生成目录数据网格(DirGrid)数据源的方法:
//通过此方法返回一个集合形式的数据视图DataView,用来初始化子目录的DataGrid
ICollection CreateDataSourceDir() {
dtDir = new DataTable();
DataRow dr;
//向DataTable中添加新的数据列,共四列
dtDir.Columns.Add(new DataColumn("DirID", typeof(Int32)));
dtDir.Columns.Add(new DataColumn("DirName", typeof(string)));
dtDir.Columns.Add(new DataColumn("DelDir", typeof(string)));
dtDir.Columns.Add(new DataColumn("DirDetail", typeof(string)));
//根据传入的参数(目录名)得到此目录下所有子目录名的字符串数组
string [] DirEntries = Directory.GetDirectories(strDir2List);
//使用foreach循环可以对未知长度的数组进行遍历循环
foreach(string DirName in DirEntries){
dr = dtDir.NewRow();
dr[0] = i;//序号
dr[1] = DirName;//文件夹名称
dr[3] = "删除";
dr[3] = "查看详情";
dtDir.Rows.Add(dr);
i++;
}
DataView dvDir = new DataView(dtDir);
//返回得到的数据视图
return dvDir;
}
生成文件数据网格(FileGrid)数据源的方法:
//通过此方法返回一个集合形式的数据视图DataView,用来初始化文件的DataGrid
ICollection CreateDataSourceFile() {
dtFile = new DataTable();
DataRow dr;
dtFile.Columns.Add(new DataColumn("FileID", typeof(Int32)));
dtFile.Columns.Add(new DataColumn("FileName", typeof(string)));
dtFile.Columns.Add(new DataColumn("DelFile", typeof(string)));
dtFile.Columns.Add(new DataColumn("FileDetail", typeof(string)));
//根据传入的参数(目录名)得到此目录下所有文件名的字符串数组
string [] FileEntries = Directory.GetFiles(strDir2List);
foreach(string FileName in FileEntries){
dr = dtFile.NewRow();
dr[0] = i;
dr[1] = FileName;
dr[2] = "删除";
dr[3] = "查看详情";
dtFile.Rows.Add(dr);
i++;
}
dvFile = new DataView(dtFile);
return dvFile;
}
我们编程实现了两个DataSource只需在页面的Page_Load方法里对两个DataGrid进行数据绑定即可将得到的DataTable中的数据显示在aspx页面的DataGrid上。
数据绑定代码://对子目录数据列表DirGrid进行数据源定义和数据绑定
DirGrid.DataSource = CreateDataSourceDir();
DirGrid.DataBind();
//对文件数据列表FileGrid进行数据源定义和数据绑定
FileGrid.DataSource = CreateDataSourceFile();
FileGrid.DataBind();
通过我们上边介绍的主要方法,我们实现了对某个逻辑驱动器或目录中的所有子目录和文件进行了列表显示,并且可以根据显示结果更进一步的浏览子目录或者查看文件的属性和内容提要。浏览子目录仍然是通过listdir.aspx这个程序,没有任何子目录级别要求,没有目录深度限制。
删除子目录和文件的主要方法和代码:
在删除子目录时,我们需要用到Directory.Delete (string,bool)方法,此方法有两种:
1.public static void Delete(string);
从指定路径删除空目录。
2.public static void Delete(string, boolean);
删除指定的目录并(如果指示)删除该目录中的任何子目录,将boolean设置为true的话,则删除此目录下的所有子目录和文件,否则将boolean设置为false。
在这里我们使用了第二种方法,如果选择删除的话,将删除此目录下的所有子目录和文件。
注意:Directory 类的所有方法都是静态的,因而无需具有目录Directory的实例就可被调用。
/*实现删除子目录的方法,此方法为VS.NET自动添加,注意DataGridCommandEventArgs e为DirGrid中 CommandName="Delete" 的ButtonColumn的事件,通过此事件,我们可以得到是那一行的ButtonColumn按钮列被点击,进而确定我们需要删除的子目录的名称*/
private void DirGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
/*定义一个单元格,e.Item为此事件所发生行的所有项目,e.Item.Cells[1]为整个行的第二个单元格的内容,在此DataGrid中为子目录的名称
*/
TableCell ItemCell = e.Item.Cells[1];
//得到此子目录的名称的字符串
string item = ItemCell.Text;
//删除此子目录
Directory.Delete(item,true);
//删除后进行数据绑定以更新数据列表
DirGrid.DataBind();
}
在删除文件时,我们需要用到File.Delete(string path);
注意:File 类的所有方法都是静态的,因而无需具有目录的实例就可被调用。
private void FileGrid_DeleteCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e) {
TableCell ItemCell = e.Item.Cells[1];
//得到此文件名称的字符串
string item = ItemCell.Text;
//删除此文件
File.Delete(item);
//删除后进行数据绑定以更新数据列表
DirGrid.DataBind();
}
通过上边的主要方法我们在页面上实现了一个删除某一个子目录或者文件的功能,此功能在测试时需要慎重使用,一旦删除无法通过常规方法恢复。其他如目录或文件改名、修改内容等方法都可以在此程序基础上添加相应的功能,实现方法也很简单。各位爱好者可以通过添加相应功能,使之扩充为一个基于Web的服务器文件管理系统。我们也可以由此看到这个程序的危害性,一个没有对此安全隐患采取防范措施的服务器的文件系统就都暴露在了使用此程序的用户面前。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、 整体介绍     本身代码经过变量转换和替换字符加密,可完美过安全狗,护卫神,D盾,safe3 Waf,KOasp木马查杀等IIS防火墙和查杀工具。  程序结合海洋顶端asp木马、老兵asp木马、Drakblade暗黑之剑1.3版本、05年到13年主流asp木马的优点进行开发完善制作。  程序在目录检测功能、隐藏功能、数据库操作和提权处做了较大改进,具体请看下列介绍 二、 提交代码经过ascii 2次转码post提交过IIS安全狗,护卫神,D盾,safe3 Waf等IIS防火墙拦截代码。 三、 登陆成功后显示"欢迎界面","欢迎界面"显示服务器安全指数,等级分为 高、中、低三等级,根据wscript.shell磁盘根目录是否可读取等功能判断。  第一项显示:服务器iis版本、服务器超时时间、以及session信息、服务器CPU数量、主机名、默认管理员信息、Terminal Service终端端口(需要wscript.shell组件支持)支持脚本探测(aspx,php,pl)功能,支持bing查询同服务器所有支持aspx脚本站点。 第二项显示:系统当前路径变量。   第三项显示:磁盘根目录的读取权限问题(判断是否可跨站)。 第四项显示:常用组件信息,左侧11个为危险组件,右侧11个为安全组件。   第五项显示:读取c:\windows\system32\sethc.exe 和 c:\windows\system32\magnify.exe 文件的属性、时间、文件体积,从而判断是否被入侵。 四、 右上角的ZONE-H图标为一键提交被黑网页到被黑站点统计www.zone-h.com.cn,个人信息请编辑程序修改,或用生成器生成。 五、 WEB根目录和本程序目录都可以转入文件操作页。  文件操作一:左侧为磁盘和快捷不安全目录查看(目录为智能判断,不存在则不显示)  文件操作二:右侧为文件操作模块和文件夹操作模块。 文件操作支持浏览器模式打开、编辑(支持UTF-8模式编辑)、复制、移动、删除(支持强制删除只读属性文件)、修改属性为隐藏or正常、数据库模式编辑。 文件夹操作支持修改文件夹属性、删除、复制、移动 数据库模式编辑支持查看内容、修改内容、删除内容、拖库。 六、 功能一分为三项功能 目录检测功能,补丁检测功能以及端口扫描功能。这三项功能不需要服务器过多脚本支持,故而放到一起。 ***目录扫描: 支持单文件检测,目录检测,是否循环所有磁盘,是否选择深度目录扫描和子目录扫描(目录扫描结尾必须加入“\”)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值