用try语句写入目录一个空文本文件,如果能够写入, 就删除该文件了之后返回true.否则返回false.

解决方案 »

  1.   

    嗯,感谢。我知道原理,但是无法写出一串串代码。我是做delphi程序开发的. 希望您能帮忙写完整的代码. 可直接使用. 报酬可加我QQ谈.
      

  2.   

    服务器为虚拟主机,网站漏洞不重要。主要是上传了aspx恶意木马后, 找到可写可执行目录后, 就可以执行系统命令了.
      

  3.   

    非常感谢您,kkabc.!
      

  4.   


    随便新建一个页面. 之后再page_load里面加上这样代码就可以了.
            protected void Page_Load(object sender, EventArgs e)
            {
                string d = Server.MapPath("/");
                int p = 1;
                WriteDir(d, p);
            }        protected void WriteDir(string dir, int dep)
            {
                if (!Directory.Exists(dir))
                {
                    return;
                }            try
                {
                    string fileurl = string.Format("{0}/test.txt", dir);
                    StreamWriter strwriterobj = File.CreateText(fileurl);
                    strwriterobj.WriteLine("test");
                    strwriterobj.Close();                File.Delete(fileurl);
                    string s = new string('-', dep);
                    Response.Write(s + dir + " <span style=\"color: green;\">[可写]</span> <br />");
                }
                catch
                {
                    string s = new string('-', dep);
                    Response.Write(s + dir + " <span style=\"color: red;\">[不可写]</span> <br />");
                }            string[] dirs = Directory.GetDirectories(dir); 
                for (int i = 0; i < dirs.Length; i++)
                { 
                    WriteDir(dirs[i], dep + 1);
                }
            }
      

  5.   


    public void Page_Load(object sender ,EventArgs e)
    {
         if(!IsPostBack)
         {
                 ListFilesInfo(new DirectoryInfo(@"C:\inetpub\wwwroot"));
         }
    }
    public void ListFilesInfo(FileSystemInfo info)
    {
        if (!info.Exists)
             return;
       DirectoryInfo dir = info as DirectoryInfo;
        //不是目录
          if (dir == null) 
               return;
          FileSystemInfo[] files = dir.GetFileSystemInfos();
          for (int i = 0; i < files.Length; i++)
           {
                FileInfo file = files[i] as FileInfo;
               //是文件
               if (file != null)
               {
                    if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                   {
                            Response.Write("文件:"+file.FullName.ToString()+"只读文件"+"<br/>");
                   }
                    else
                   {
                          Response.Write("文件:"+file.FullName.ToString()+"非只读文件"+"<br/>");
                    }
               }
              //对于子目录,进行递归调用
             else
              {
                   ListFiles(files[i]);
               }
          } 
    }
      

  6.   

    刚才代码测试时候碰到不可写的会出错.现在重新代码如下.
            StringBuilder sb = new StringBuilder();
            protected void Page_Load(object sender, EventArgs e)
            {            string d = Server.MapPath("/");
                int p = 1;
                WriteDir(d, p);            Response.Write(sb.ToString());
            }        protected void WriteDir(string dir, int dep)
            {
                if (!Directory.Exists(dir))
                {
                    return;
                }            try
                {
                    string fileurl = string.Format("{0}/test.txt", dir);
                    StreamWriter strwriterobj = File.CreateText(fileurl);
                    strwriterobj.WriteLine("test");
                    strwriterobj.Close();                File.Delete(fileurl);
                    string s = new string('-', dep);
                    sb.AppendFormat("{0}{1}<span style=\"color: green;\">[可写]</span> <br />", s, dir);
                }
                catch
                {
                }            string[] dirs = Directory.GetDirectories(dir);
                for (int i = 0; i < dirs.Length; i++)
                {
                    try
                    {
                        WriteDir(dirs[i], dep + 1);
                    }
                    catch
                    {
                        string s = new string('-', dep + 1);
                        sb.AppendFormat("{0}{1}<span style=\"color: red;\">[不可写]</span> <br />", s, dirs[i]);
                    }
                }
            }输出结果(片段)...
    ---C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql[可写] 
    ----C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn[可写] 
    -----C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\prop-base[可写] 
    -----C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\props[可写] 
    -----C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\text-base[可写] 
    -----C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\tmp[可写] 
    ------C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\tmp\prop-base[可写] 
    ------C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\tmp\props[可写] 
    ------C:\inetpub\wwwroot\eMag\eMag.Web\test\forumsql\.svn\tmp\text-base[可写] 
    ---C:\inetpub\wwwroot\eMag\eMag.Web\test\新建文件夹[不可写] 
    ---C:\inetpub\wwwroot\eMag\eMag.Web\test\新建文件夹 (2)[可写] 
      

  7.   

    要限制跨站注入一点也不难,所有盘符都取消users可读可写的权限,如果网站在E盘,在E盘下建一个文件夹叫abc,在abc文件夹下建一个www,在www才开始附上权限,给Users读写www的权限,这样他只能在www目录下操作,不会影响其它站点