<?xml version="1.0" encoding="gb2312"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[啊D Blog]]></title>
  <subtitle type="html"><![CDATA[关注网络，关注安全~~~]]></subtitle>
  <id>http://www.d99net.net/</id> 
  <link rel="alternate" type="text/html" href="http://www.d99net.net/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.d99net.net/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2012-02-15T14:58:25+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[最近要测试D盾的某些功能，可能有时会不能访问，如不能访问时，请稍候再访问！]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=1" label="杂谈" /> 
	  <updated>2012-02-15T14:58:25+08:00</updated>
	  <published>2012-02-15T14:58:25+08:00</published>
		  <summary type="html"><![CDATA[最近要测试D盾的某些功能，可能有时会不能访问，如不能访问时，请稍候再访问！]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=428" /> 
	  <id>http://www.d99net.net/default.asp?id=428</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[防D机房推荐，经常给攻击的朋友可以看看]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=1" label="杂谈" /> 
	  <updated>2012-02-14T22:36:22+08:00</updated>
	  <published>2012-02-14T22:36:22+08:00</published>
		  <summary type="html"><![CDATA[一直有网友问我有没有好的防DDOS的机房，一直没找到，所以也没回答过别人这问题。<br/>新年前，不知道谁的攻击，把我美国的VPS攻击到无法访问，后来只能问人找到了现在的机房，<br/>防D还算可以吧，使用了一个月了，效果还成，推荐给有需要的朋友！<br/><br/>网址：<a href="http://www.aadata.net/" target="_blank">http://www.aadata.net/</a><br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=431" /> 
	  <id>http://www.d99net.net/default.asp?id=431</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[因相关部门通知，IE恶搞迷 将在此站移除！]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=1" label="杂谈" /> 
	  <updated>2012-02-14T11:44:58+08:00</updated>
	  <published>2012-02-14T11:44:58+08:00</published>
		  <summary type="html"><![CDATA[为了配合相关工作，IE恶搞迷&nbsp;软件已从此站删除，不要再问相关软件问题，本人也将不再回答！<br/><br/>至于相关刷什么币的，都是假的，不要相信！]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=430" /> 
	  <id>http://www.d99net.net/default.asp?id=430</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[D盾_IIS防火墙 V1.37.5]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=3" label="我的软件" /> 
	  <updated>2012-02-09T20:05:08+08:00</updated>
	  <published>2012-02-09T20:05:08+08:00</published>
		  <summary type="html"><![CDATA[1.对文件检测做优化处理&#44;更高效<br/>2.修正3389域名模式时多域名只能处理第一个域名的问题<br/>3.对服务器修改系统组的自动识别&#44;并自动设置软件权限&#44;防止软件无法安装和加载！<br/>4.解决“只允许执行的脚本扩展名”功能对PHP代码伪静态的脚本误拦问题。<br/><br/><a href="http://bbs.d99net.net/read.php?tid=140" target="_blank">http://bbs.d99net.net/read.php?tid=140</a>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=429" /> 
	  <id>http://www.d99net.net/default.asp?id=429</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[浅谈NT的ACL，令牌，权限与安全性问题 [转]]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=2" label="技术文章" /> 
	  <updated>2012-01-22T18:32:06+08:00</updated>
	  <published>2012-01-22T18:32:06+08:00</published>
		  <summary type="html"><![CDATA[浅谈NT的ACL，令牌，权限与安全性问题<br/>-----另一种克隆帐号的途径&nbsp;<br/>&nbsp;<br/><br/>作者：刺（aXis）<br/><br/>来源：www.3389.net<br/><br/><br/>摘要：关于nt的acl&#44;token&#44;and&nbsp;privilege的，以及通过privilege绕过acl&#44;达到访问文件的目的。可以说是另一种克隆administrator的方法，不过更隐蔽，利用起来难度较大，需要绕过检测才行，目前取的的突破是利用权限绕过acl。<br/>&nbsp;<br/><br/>关键字：ACL&#44;ACE&#44;DACL&#44;TOKEN&#44;SID&#44;PRIVILEGE<br/>&nbsp;<br/><br/>申明：谨以此文，献给陈静。<br/><br/>&nbsp;<br/>一．基本概念（这部分介绍的是令牌，ACL等基本概念，是为第二部分做准备，如果你已经了解其内容，请跳过这一部分）&nbsp;<br/>　　<br/><br/>1．什么是令牌（TOKEN）<br/>　<br/><br/>当用户登录到Windows&nbsp;NT/2000/XP，同时通过了身份认证，此时将会由系统为该用户分配一个令牌。令牌是一个数据结构，用于由所有该用户激活的进程和线程。令牌的结构如下图：<br/><br/>Token&nbsp;source<br/><br/>Impersonation&nbsp;Type<br/><br/>Token&nbsp;ID<br/><br/>Authentication&nbsp;ID<br/><br/>Modified&nbsp;ID<br/><br/>Expiration&nbsp;Time<br/><br/>Default&nbsp;Primary&nbsp;Group<br/><br/>Default&nbsp;DACL<br/><br/>User&nbsp;Account&nbsp;SID<br/><br/>Group&nbsp;1&nbsp;SID<br/><br/>......<br/><br/>Group&nbsp;n&nbsp;SID<br/><br/>Restricted&nbsp;SID&nbsp;1<br/><br/>......<br/><br/>Restricted&nbsp;SID&nbsp;n<br/><br/>Privilege&nbsp;1<br/><br/>......<br/><br/>Prililege&nbsp;n<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>这样看不太容易理解。我们来看一个实例，使用win2000&nbsp;resource&nbsp;kit中的whoami.exe来查看当前用户的访问令牌（Access&nbsp;Token）中的详细信息<br/><br/>&nbsp;<br/><br/>C:\\\\&gt;whoami&nbsp;/all<br/><br/>[User]&nbsp;=&nbsp;\\\&#34;DARKDEAMON\\\\Administrator\\\&#34;&nbsp;S-1-5-21-1409082233-1957994488-47230797<br/><br/>1-500<br/><br/>&nbsp;<br/><br/>[Group&nbsp;1]&nbsp;=&nbsp;\\\&#34;DARKDEAMON\\\\None\\\&#34;&nbsp;S-1-5-21-1409082233-1957994488-472307971-513<br/><br/>[Group&nbsp;2]&nbsp;=&nbsp;\\\&#34;Everyone\\\&#34;&nbsp;S-1-1-0<br/><br/>[Group&nbsp;3]&nbsp;=&nbsp;\\\&#34;BUILTIN\\\\Administrators\\\&#34;&nbsp;S-1-5-32-544<br/><br/>[Group&nbsp;4]&nbsp;=&nbsp;\\\&#34;BUILTIN\\\\Users\\\&#34;&nbsp;S-1-5-32-545<br/><br/>[Group&nbsp;5]&nbsp;=&nbsp;\\\&#34;NT&nbsp;AUTHORITY\\\\INTERACTIVE\\\&#34;&nbsp;S-1-5-4<br/><br/>[Group&nbsp;6]&nbsp;=&nbsp;\\\&#34;NT&nbsp;AUTHORITY\\\\Authenticated&nbsp;Users\\\&#34;&nbsp;S-1-5-11<br/><br/>[Group&nbsp;7]&nbsp;=&nbsp;\\\&#34;LOCAL\\\&#34;&nbsp;S-1-2-0<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&#40;X)&nbsp;SeChangeNotifyPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeSecurityPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeBackupPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeRestorePrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeSystemtimePrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeShutdownPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeRemoteShutdownPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeTakeOwnershipPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeDebugPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeSystemEnvironmentPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeSystemProfilePrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeProfileSingleProcessPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeIncreaseBasePriorityPrivilege&nbsp;=<br/><br/>&#40;X)&nbsp;SeLoadDriverPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeCr&#101;atePagefilePrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeIncreaseQuotaPrivilege&nbsp;=<br/><br/>&#40;X)&nbsp;SeUndockPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeTcbPrivilege&nbsp;=<br/><br/>&nbsp;<br/><br/>C:\\\\&gt;<br/><br/>　<br/><br/>　<br/><br/>　<br/><br/>这就是我的令牌中的信息，它包括我的SID，属于的组，具有的权限的详细列表等信息。所以可见，令牌决定了一个用户在一台计算机上所具有的能力。<br/><br/>　<br/><br/>　<br/><br/>　<br/><br/>　<br/><br/>2.安全性标志符（SID）<br/><br/>&nbsp;<br/><br/>SID是在创建一个用户或组的时候由系统分配的，是唯一的。当一个本地用户登录时，SID将由系统从SAM中的用户数据库中取出。<br/><br/>关于SID的结构可以参照《INSIDE&nbsp;WINDOWS2000》里的一段：<br/><br/>A&nbsp;SID&nbsp;is&nbsp;a&nbsp;variable-length&nbsp;numeric&nbsp;value&nbsp;that&nbsp;consists&nbsp;of&nbsp;a&nbsp;SID&nbsp;structure&nbsp;revision&nbsp;number&#44;&nbsp;a&nbsp;48-bit&nbsp;identifier&nbsp;authority&nbsp;value&#44;&nbsp;and&nbsp;a&nbsp;variable&nbsp;number&nbsp;of&nbsp;32-bit&nbsp;subauthority&nbsp;o&#114;&nbsp;relative&nbsp;identifier&nbsp;&#40;RID)&nbsp;values.<br/><br/>下面是一些系统内置的SID<br/><br/>Well-Known&nbsp;SIDs<br/><br/>SID<br/>Group<br/>Use<br/><br/>S-1-1-0<br/>Everyone<br/>A&nbsp;group&nbsp;that&nbsp;includes&nbsp;all&nbsp;users.<br/><br/>S-1-2-0<br/>Local<br/>Users&nbsp;who&nbsp;log&nbsp;on&nbsp;to&nbsp;terminals&nbsp;locally&nbsp;&#40;physically)&nbsp;connected&nbsp;to&nbsp;the&nbsp;system.<br/><br/>S-1-3-0<br/>Creator&nbsp;Owner&nbsp;ID<br/>A&nbsp;security&nbsp;identifier&nbsp;to&nbsp;be&nbsp;replaced&nbsp;by&nbsp;the&nbsp;security&nbsp;identifier&nbsp;of&nbsp;the&nbsp;user&nbsp;who&nbsp;cr&#101;ated&nbsp;a&nbsp;new&nbsp;object.&nbsp;This&nbsp;SID&nbsp;is&nbsp;used&nbsp;in&nbsp;inheritable&nbsp;access-control&nbsp;entries&nbsp;&#40;ACEs).<br/><br/>S-1-3-1<br/>Creator&nbsp;Group&nbsp;ID<br/>Identifies&nbsp;a&nbsp;security&nbsp;identifier&nbsp;to&nbsp;be&nbsp;replaced&nbsp;by&nbsp;the&nbsp;primary-group&nbsp;SID&nbsp;of&nbsp;the&nbsp;user&nbsp;who&nbsp;cr&#101;ated&nbsp;a&nbsp;new&nbsp;object.&nbsp;Use&nbsp;this&nbsp;SID&nbsp;in&nbsp;inheritable&nbsp;ACEs.<br/><br/><br/>SID结尾的数字是RID（relative&nbsp;identifier）。500表示是管理员组，GUEST组的是501<br/><br/>ADAM提出的克隆管理员帐号就是在SID上做手脚，把一个帐号的SID的RID克隆成500，这样系统就会认为是管理员了。<br/><br/>一个完整的SID的结构可以参看上面令牌中的SID。<br/><br/>S-1-5-21-1409082233-1957994488-472307971-500<br/><br/>　<br/><br/>　<br/><br/>　<br/><br/>　<br/><br/>3．什么是访问控制列表（ACL）<br/><br/>&nbsp;<br/><br/>ACL（access&nbsp;control&nbsp;list）从字面的意思很好理解。一个系统通过ACL来判断用户对资源的何种程度的访问。由两种类型的ACL：DACL（Discretionary&nbsp;Access&nbsp;Control&nbsp;List）和SACL（System&nbsp;Access&nbsp;Control&nbsp;List）。DACL包括户和组的列表，以及相应的权限，允许或是拒绝，用来确定对资源的访问权限。SACL则用来确定安全资源的审核策略。ACL由零个或多个ACE（Access&nbsp;Control&nbsp;Entries）组成，一个ACE包括一个SID和该SID可访问资源的描述，比如允许和拒绝，拒绝优先于允许。<br/><br/>在win2000&nbsp;resource&nbsp;kit中有几个工具是关于acl的，较为典型的是xcacls。下面是一个用xcacls查看acl的例子<br/><br/>C:\\\\Program&nbsp;Files\\\\Resource&nbsp;Kit&gt;xcacls&nbsp;whoami.exe<br/><br/>C:\\\\Program&nbsp;Files\\\\Resource&nbsp;Kit\\\\whoami.exe&nbsp;BUILTIN\\\\Users:R<br/><br/>BUILTIN\\\\Power&nbsp;Users:C<br/><br/>BUILTIN\\\\Administrators:F<br/><br/>NT&nbsp;AUTHORITY\\\\SYSTEM:F<br/><br/>NT&nbsp;AUTHORITY\\\\TERMINAL&nbsp;SERVER&nbsp;USER:C<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>C:\\\\Program&nbsp;Files\\\\Resource&nbsp;Kit&gt;<br/><br/>&nbsp;<br/><br/>其他的关于acl的工具还有svcacls.exe&#44;showacls以及subinacl.exe等。这里不再一一赘述。<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>　<br/><br/>4．权限（privilege）<br/><br/>&nbsp;<br/><br/>简单来说，权限是系统赋予用户的一定的权力，它们允许或者不允许某些影响整个计算机系统而非某一对象的特权操作。下面的表格列出了系统的一些权限和功能。<br/><br/>Privilege&nbsp;<br/>Windows&nbsp;Privilege&nbsp;<br/>Description&nbsp;<br/><br/>SeTcbPrivilege&nbsp;<br/>Act&nbsp;as&nbsp;part&nbsp;of&nbsp;the&nbsp;operating&nbsp;system&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;to&nbsp;authenticate&nbsp;like&nbsp;a&nbsp;user&nbsp;and&nbsp;thus&nbsp;gain&nbsp;access&nbsp;to&nbsp;the&nbsp;same&nbsp;resources&nbsp;as&nbsp;a&nbsp;user.&nbsp;Only&nbsp;low-level&nbsp;authentication&nbsp;services&nbsp;should&nbsp;require&nbsp;this&nbsp;privilege.&nbsp;<br/><br/>SeMachineAccountPrivilege&nbsp;<br/>Add&nbsp;computers&nbsp;to&nbsp;a&nbsp;domain&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;add&nbsp;a&nbsp;computer&nbsp;to&nbsp;a&nbsp;specific&nbsp;domain.&nbsp;For&nbsp;the&nbsp;privilege&nbsp;to&nbsp;be&nbsp;effective&#44;&nbsp;it&nbsp;must&nbsp;be&nbsp;assigned&nbsp;to&nbsp;the&nbsp;user&nbsp;as&nbsp;part&nbsp;of&nbsp;local&nbsp;security&nbsp;policy&nbsp;for&nbsp;domain&nbsp;controllers&nbsp;in&nbsp;the&nbsp;domain.&nbsp;<br/><br/>SeBackupPrivilege&nbsp;<br/>Back&nbsp;up&nbsp;files&nbsp;and&nbsp;directories&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;circumvent&nbsp;file&nbsp;and&nbsp;directory&nbsp;permissions&nbsp;to&nbsp;back&nbsp;up&nbsp;the&nbsp;system.&nbsp;The&nbsp;privilege&nbsp;is&nbsp;checked&nbsp;only&nbsp;when&nbsp;an&nbsp;application&nbsp;attempts&nbsp;access&nbsp;through&nbsp;the&nbsp;NTFS&nbsp;backup&nbsp;application&nbsp;programming&nbsp;interface&nbsp;&#40;API).&nbsp;Otherwise&#44;&nbsp;normal&nbsp;file&nbsp;and&nbsp;directory&nbsp;permissions&nbsp;apply.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&nbsp;and&nbsp;Backup&nbsp;Operators.&nbsp;See&nbsp;also&nbsp;Restore&nbsp;files&nbsp;and&nbsp;directories&nbsp;in&nbsp;this&nbsp;table.<br/><br/>SeChangeNotifyPrivilege&nbsp;<br/>Bypass&nbsp;traverse&nbsp;checking&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;pass&nbsp;through&nbsp;folders&nbsp;to&nbsp;which&nbsp;the&nbsp;user&nbsp;otherwise&nbsp;has&nbsp;no&nbsp;access&nbsp;while&nbsp;navigating&nbsp;an&nbsp;object&nbsp;path&nbsp;in&nbsp;any&nbsp;Windows&nbsp;file&nbsp;system&nbsp;o&#114;&nbsp;in&nbsp;the&nbsp;registry.&nbsp;This&nbsp;privilege&nbsp;does&nbsp;not&nbsp;allow&nbsp;the&nbsp;user&nbsp;to&nbsp;list&nbsp;the&nbsp;contents&nbsp;of&nbsp;a&nbsp;folder;&nbsp;it&nbsp;allows&nbsp;the&nbsp;user&nbsp;only&nbsp;to&nbsp;traverse&nbsp;its&nbsp;directories.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&#44;&nbsp;Backup&nbsp;Operators&#44;&nbsp;Power&nbsp;Users&#44;&nbsp;Users&#44;&nbsp;and&nbsp;Everyone.<br/><br/>SeSystemTimePrivilege&nbsp;<br/>Change&nbsp;the&nbsp;system&nbsp;time&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;set&nbsp;the&nbsp;time&nbsp;for&nbsp;the&nbsp;internal&nbsp;clock&nbsp;of&nbsp;the&nbsp;computer.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&nbsp;and&nbsp;Power&nbsp;Users.<br/><br/>SeCr&#101;atePagefilePrivilege&nbsp;<br/>Cr&#101;ate&nbsp;a&nbsp;page&nbsp;filepagefile&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;cr&#101;ate&nbsp;and&nbsp;change&nbsp;the&nbsp;size&nbsp;of&nbsp;a&nbsp;page&nbsp;file.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeCr&#101;ateTokenPrivilege&nbsp;<br/>Cr&#101;ate&nbsp;a&nbsp;token&nbsp;object&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;to&nbsp;cr&#101;ate&nbsp;an&nbsp;access&nbsp;token&nbsp;by&nbsp;calling&nbsp;NtCr&#101;ateToken&#40;)&nbsp;o&#114;&nbsp;other&nbsp;token-creating&nbsp;APIs.&nbsp;<br/><br/>SeCr&#101;atePermanentPrivilege&nbsp;<br/>Cr&#101;ate&nbsp;permanent&nbsp;shared&nbsp;objects&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;to&nbsp;cr&#101;ate&nbsp;a&nbsp;directory&nbsp;object&nbsp;in&nbsp;the&nbsp;Windows&nbsp;2000&nbsp;object&nbsp;manager.&nbsp;<br/><br/>SeDebugPrivilege&nbsp;<br/>Debug&nbsp;programs&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;attach&nbsp;a&nbsp;debugger&nbsp;to&nbsp;any&nbsp;process.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeEnableDelegationPrivilege&nbsp;<br/>Enable&nbsp;computer&nbsp;and&nbsp;user&nbsp;accounts&nbsp;to&nbsp;be&nbsp;trusted&nbsp;for&nbsp;delegation&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;to&nbsp;change&nbsp;the&nbsp;Trusted&nbsp;for&nbsp;Delegation&nbsp;setting&nbsp;on&nbsp;a&nbsp;User&nbsp;o&#114;&nbsp;Computer&nbsp;object&nbsp;in&nbsp;Active&nbsp;Directory.&nbsp;The&nbsp;user&nbsp;o&#114;&nbsp;computer&nbsp;that&nbsp;is&nbsp;granted&nbsp;this&nbsp;privilege&nbsp;must&nbsp;also&nbsp;have&nbsp;write&nbsp;access&nbsp;to&nbsp;the&nbsp;account&nbsp;control&nbsp;flags&nbsp;on&nbsp;the&nbsp;object.&nbsp;<br/><br/>SeRemoteShutdownPrivilege&nbsp;<br/>Force&nbsp;shutdown&nbsp;from&nbsp;a&nbsp;remote&nbsp;system&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;shut&nbsp;down&nbsp;a&nbsp;computer&nbsp;from&nbsp;a&nbsp;remote&nbsp;location&nbsp;on&nbsp;the&nbsp;network.&nbsp;See&nbsp;also&nbsp;Shut&nbsp;down&nbsp;the&nbsp;system&nbsp;in&nbsp;this&nbsp;table.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeAuditPrivilege&nbsp;<br/>Generate&nbsp;security&nbsp;audits&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;to&nbsp;cr&#101;ate&#44;&nbsp;generate&#44;&nbsp;and&nbsp;add&nbsp;entries&nbsp;in&nbsp;the&nbsp;security&nbsp;log.&nbsp;The&nbsp;security&nbsp;log&nbsp;is&nbsp;used&nbsp;to&nbsp;trace&nbsp;unauthorized&nbsp;system&nbsp;access.&nbsp;See&nbsp;also&nbsp;Manage&nbsp;auditing&nbsp;and&nbsp;security&nbsp;log&nbsp;in&nbsp;this&nbsp;table.&nbsp;<br/><br/>SeIncreaseQuotaPrivilege&nbsp;<br/>Increase&nbsp;quotas&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;that&nbsp;has&nbsp;Write&nbsp;Property&nbsp;access&nbsp;to&nbsp;another&nbsp;process&nbsp;to&nbsp;increase&nbsp;the&nbsp;processor&nbsp;quota&nbsp;that&nbsp;is&nbsp;assigned&nbsp;to&nbsp;the&nbsp;other&nbsp;process.&nbsp;This&nbsp;privilege&nbsp;is&nbsp;useful&nbsp;for&nbsp;system&nbsp;tuning&#44;&nbsp;but&nbsp;it&nbsp;can&nbsp;be&nbsp;abused&#44;&nbsp;as&nbsp;in&nbsp;a&nbsp;denial&nbsp;of&nbsp;service&nbsp;attack.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeIncreaseBasePriorityPrivilege&nbsp;<br/>Increase&nbsp;scheduling&nbsp;priority&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;that&nbsp;has&nbsp;Write&nbsp;Property&nbsp;access&nbsp;to&nbsp;another&nbsp;process&nbsp;to&nbsp;increase&nbsp;the&nbsp;execution&nbsp;priority&nbsp;of&nbsp;the&nbsp;other&nbsp;process.&nbsp;A&nbsp;user&nbsp;with&nbsp;this&nbsp;privilege&nbsp;can&nbsp;change&nbsp;the&nbsp;scheduling&nbsp;priority&nbsp;of&nbsp;a&nbsp;process&nbsp;in&nbsp;the&nbsp;Task&nbsp;Manager&nbsp;dialog&nbsp;box.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeLoadDriverPrivilege&nbsp;<br/>Load&nbsp;and&nbsp;unload&nbsp;device&nbsp;drivers&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;install&nbsp;and&nbsp;uninstall&nbsp;Plug&nbsp;and&nbsp;Play&nbsp;device&nbsp;drivers.&nbsp;Device&nbsp;drivers&nbsp;that&nbsp;are&nbsp;not&nbsp;Plug&nbsp;and&nbsp;Play&nbsp;are&nbsp;not&nbsp;affected&nbsp;by&nbsp;this&nbsp;privilege&nbsp;and&nbsp;can&nbsp;be&nbsp;installed&nbsp;only&nbsp;by&nbsp;Administrators.&nbsp;Because&nbsp;device&nbsp;drivers&nbsp;run&nbsp;as&nbsp;trusted&nbsp;&#40;highly&nbsp;privileged)&nbsp;programs&#44;&nbsp;this&nbsp;privilege&nbsp;can&nbsp;be&nbsp;misused&nbsp;to&nbsp;install&nbsp;hostile&nbsp;programs&nbsp;and&nbsp;give&nbsp;them&nbsp;destructive&nbsp;access&nbsp;to&nbsp;resources.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeLockMemoryPrivilege&nbsp;<br/>Lock&nbsp;pages&nbsp;in&nbsp;memory&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;to&nbsp;keep&nbsp;data&nbsp;in&nbsp;physical&nbsp;memory&#44;&nbsp;which&nbsp;prevents&nbsp;the&nbsp;system&nbsp;from&nbsp;paging&nbsp;the&nbsp;data&nbsp;to&nbsp;virtual&nbsp;memory&nbsp;on&nbsp;disk.&nbsp;Exercising&nbsp;this&nbsp;privilege&nbsp;can&nbsp;significantly&nbsp;degrade&nbsp;system&nbsp;performance.&nbsp;This&nbsp;privilege&nbsp;is&nbsp;obsolete&nbsp;and&nbsp;is&nbsp;therefore&nbsp;never&nbsp;sel&#101;cted.&nbsp;<br/><br/>SeSecurityPrivilege&nbsp;<br/>Manage&nbsp;auditing&nbsp;and&nbsp;security&nbsp;log&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;specify&nbsp;object&nbsp;access&nbsp;auditing&nbsp;options&nbsp;for&nbsp;individual&nbsp;resources&nbsp;such&nbsp;as&nbsp;files&#44;&nbsp;Active&nbsp;Directory&nbsp;objects&#44;&nbsp;and&nbsp;registry&nbsp;keys.&nbsp;Object&nbsp;access&nbsp;auditing&nbsp;is&nbsp;not&nbsp;actually&nbsp;performed&nbsp;unless&nbsp;you&nbsp;have&nbsp;enabled&nbsp;it&nbsp;in&nbsp;Audit&nbsp;Policy&nbsp;&#40;under&nbsp;Security&nbsp;Settings&#44;&nbsp;Local&nbsp;Policies).&nbsp;A&nbsp;user&nbsp;who&nbsp;has&nbsp;this&nbsp;privilege&nbsp;can&nbsp;also&nbsp;view&nbsp;and&nbsp;clear&nbsp;the&nbsp;security&nbsp;log&nbsp;from&nbsp;Event&nbsp;Viewer.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.&nbsp;<br/><br/>SeSystemEnvironmentPrivilege&nbsp;<br/>Modify&nbsp;firmware&nbsp;environment&nbsp;values&nbsp;<br/>Allows&nbsp;modification&nbsp;of&nbsp;system&nbsp;environment&nbsp;variables&nbsp;either&nbsp;by&nbsp;a&nbsp;process&nbsp;through&nbsp;an&nbsp;API&nbsp;o&#114;&nbsp;by&nbsp;a&nbsp;user&nbsp;through&nbsp;System&nbsp;Properties.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.&nbsp;<br/><br/>SeProfileSingleProcessPrivilege&nbsp;<br/>Profile&nbsp;a&nbsp;single&nbsp;process&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;run&nbsp;Microsoft&amp;#174;&nbsp;Windows&nbsp;NT&amp;#174;&nbsp;and&nbsp;Microsoft&amp;#174;&nbsp;Windows&amp;#174;&nbsp;2000&nbsp;performance-monitoring&nbsp;tools&nbsp;to&nbsp;monitor&nbsp;the&nbsp;performance&nbsp;of&nbsp;nonsystem&nbsp;processes.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&nbsp;and&nbsp;Power&nbsp;Users.<br/><br/>SeSystemProfilePrivilege&nbsp;<br/>Profile&nbsp;system&nbsp;performance&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;run&nbsp;Windows&nbsp;NT&nbsp;and&nbsp;Windows&nbsp;2000&nbsp;performance-monitoring&nbsp;tools&nbsp;to&nbsp;monitor&nbsp;the&nbsp;performance&nbsp;of&nbsp;system&nbsp;processes.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>SeUndockPrivilege&nbsp;<br/>Remove&nbsp;computer&nbsp;from&nbsp;docking&nbsp;station&nbsp;<br/>Allows&nbsp;the&nbsp;user&nbsp;of&nbsp;a&nbsp;portable&nbsp;computer&nbsp;to&nbsp;undock&nbsp;the&nbsp;computer&nbsp;by&nbsp;clicking&nbsp;Eject&nbsp;PC&nbsp;on&nbsp;the&nbsp;Start&nbsp;menu.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&#44;&nbsp;Power&nbsp;Users&#44;&nbsp;and&nbsp;Users.<br/><br/>SeAssignPrimaryTokenPrivilege&nbsp;<br/>Replace&nbsp;a&nbsp;process-level&nbsp;token&nbsp;<br/>Allows&nbsp;a&nbsp;parent&nbsp;process&nbsp;to&nbsp;replace&nbsp;the&nbsp;access&nbsp;token&nbsp;associated&nbsp;with&nbsp;a&nbsp;child&nbsp;process.&nbsp;<br/><br/>SeRestorePrivilege&nbsp;<br/>Restore&nbsp;files&nbsp;and&nbsp;directories&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;circumvent&nbsp;file&nbsp;and&nbsp;directory&nbsp;permissions&nbsp;when&nbsp;restoring&nbsp;backed-up&nbsp;files&nbsp;and&nbsp;directories&nbsp;and&nbsp;to&nbsp;set&nbsp;any&nbsp;valid&nbsp;security&nbsp;principal&nbsp;as&nbsp;the&nbsp;owner&nbsp;of&nbsp;an&nbsp;object.&nbsp;See&nbsp;also&nbsp;Back&nbsp;up&nbsp;files&nbsp;and&nbsp;directories&nbsp;in&nbsp;this&nbsp;table.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&nbsp;and&nbsp;Backup&nbsp;Operators.<br/><br/>SeShutdownPrivilege&nbsp;<br/>Shut&nbsp;down&nbsp;the&nbsp;system&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;shut&nbsp;down&nbsp;the&nbsp;local&nbsp;computer.&nbsp;See&nbsp;also&nbsp;Force&nbsp;shutdown&nbsp;from&nbsp;a&nbsp;remote&nbsp;system&nbsp;in&nbsp;this&nbsp;table.&nbsp;In&nbsp;Windows&nbsp;2000&nbsp;Professional:&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&#44;&nbsp;Backup&nbsp;Operators&#44;&nbsp;Power&nbsp;Users&#44;&nbsp;and&nbsp;Users.&nbsp;In&nbsp;Windows&nbsp;2000&nbsp;Server:<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;not&nbsp;assigned&nbsp;to&nbsp;Users&#44;&nbsp;only&nbsp;to&nbsp;Administrators&#44;&nbsp;Backup&nbsp;Operators&#44;&nbsp;and&nbsp;Power&nbsp;Users.<br/><br/>SeSynchAgentPrivilege&nbsp;<br/>Synchronize&nbsp;directory&nbsp;service&nbsp;data&nbsp;<br/>Allows&nbsp;a&nbsp;process&nbsp;to&nbsp;provide&nbsp;directory&nbsp;synchronization&nbsp;services.&nbsp;This&nbsp;privilege&nbsp;is&nbsp;relevant&nbsp;only&nbsp;on&nbsp;domain&nbsp;controllers.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators&nbsp;and&nbsp;LocalSystem&nbsp;accounts&nbsp;on&nbsp;domain&nbsp;controllers.<br/><br/>SeTakeOwnershipPrivilege&nbsp;<br/>Take&nbsp;ownership&nbsp;of&nbsp;files&nbsp;o&#114;&nbsp;other&nbsp;objects&nbsp;<br/>Allows&nbsp;a&nbsp;user&nbsp;to&nbsp;take&nbsp;ownership&nbsp;of&nbsp;any&nbsp;securable&nbsp;object&nbsp;in&nbsp;the&nbsp;system&#44;&nbsp;including&nbsp;Active&nbsp;Directory&nbsp;objects&#44;&nbsp;files&nbsp;and&nbsp;folders&#44;&nbsp;printers&#44;&nbsp;registry&nbsp;keys&#44;&nbsp;processes&#44;&nbsp;and&nbsp;threads.&nbsp;<br/><br/>By&nbsp;default&#44;&nbsp;this&nbsp;privilege&nbsp;is&nbsp;assigned&nbsp;to&nbsp;Administrators.<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/><br/>　<br/><br/>　<br/><br/>　<br/><br/>二．一些安全问题<br/><br/>　<br/><br/>1.利用备份权限绕过访问控制<br/><br/>&nbsp;<br/><br/>　<br/><br/>系统备份员（Backup&nbsp;Operators）和管理员（Administrator）具有一项权限：SeBackupPrivilege<br/><br/>&nbsp;<br/><br/>利用该权限可以访问正常情况下被拒绝访问的文件。当在ACL中设置拒绝某帐号读取文件时，一个备份程序可以在调用Cr&#101;ateprocess时，通过设置FILE_FLAG_BACKUP_SEMANTICS的标志来对文件进行读取。<br/><br/>&nbsp;<br/><br/>按照《writng&nbsp;secure&nbsp;code》一书给出的代码如下<br/><br/>1．&nbsp;假设你具有SeBackupPrivilege权限。<br/><br/>2．&nbsp;创建一个txt文件，内容为：writings&nbsp;this&nbsp;for&nbsp;cj<br/><br/>3．&nbsp;添加一个全部拒绝该用户访问的ACE。<br/><br/>&nbsp;<br/><br/>现在，试着打开该文件，将会出现拒绝访问的提示。现在，编译下面这段代码（来自《writng&nbsp;secure&nbsp;code》）<br/><br/>&nbsp;<br/><br/>/*<br/><br/>WOWAccess.cpp<br/><br/>*/<br/><br/>#include&nbsp;<br/><br/>#include&nbsp;<br/><br/>&nbsp;<br/><br/>int&nbsp;EnablePriv&nbsp;&#40;char&nbsp;*szPriv)&nbsp;{<br/><br/>HANDLE&nbsp;hToken&nbsp;=&nbsp;0;<br/><br/>&nbsp;<br/><br/>if&nbsp;&#40;!OpenProcessToken&#40;GetCurrentProcess&#40;)&#44;<br/><br/>TOKEN_ADJUST_PRIVILEGES&#44;<br/><br/>&amp;hToken))&nbsp;{<br/><br/>printf&#40;\\\&#34;OpenProcessToken&#40;)&nbsp;failed&nbsp;-&gt;&nbsp;%d\\\&#34;&#44;&nbsp;GetLastError&#40;));<br/><br/>return&nbsp;-1;<br/><br/>}&nbsp;<br/><br/><br/>--------------------------------------------------------------------------------<br/><br/>TOKEN_PRIVILEGES&nbsp;newPrivs;<br/><br/>if&nbsp;&#40;!LookupPrivilegeValue&nbsp;&#40;NULL&#44;&nbsp;szPriv&#44;<br/><br/>&amp;newPrivs.Privileges[0].Luid))&nbsp;{<br/><br/>printf&#40;\\\&#34;LookupPrivilegeValue&#40;)&nbsp;failed&nbsp;-&gt;&nbsp;%d\\\&#34;&#44;&nbsp;GetLastError&#40;));<br/><br/>CloseHandle&nbsp;&#40;hToken);<br/><br/>return&nbsp;-1;<br/><br/>}<br/><br/>&nbsp;<br/><br/>newPrivs.Privileges[0].Attributes&nbsp;=&nbsp;SE_PRIVILEGE_ENABLED;<br/><br/>newPrivs.PrivilegeCount&nbsp;=&nbsp;1;<br/><br/>&nbsp;<br/><br/>if&nbsp;&#40;!AdjustTokenPrivileges&#40;hToken&#44;&nbsp;FALSE&#44;&nbsp;&amp;newPrivs&#44;&nbsp;0&#44;&nbsp;NULL&#44;&nbsp;NULL))&nbsp;{<br/><br/>printf&#40;\\\&#34;AdjustTokenPrivileges&#40;)&nbsp;failed&nbsp;-&gt;&nbsp;%d\\\&#34;&#44;&nbsp;GetLastError&#40;));<br/><br/>CloseHandle&nbsp;&#40;hToken);<br/><br/>return&nbsp;-1;<br/><br/>}<br/><br/>CloseHandle&nbsp;&#40;hToken);<br/><br/>return&nbsp;0;<br/><br/>}<br/><br/>&nbsp;<br/><br/>void&nbsp;DoIt&#40;char&nbsp;*szFileName&#44;&nbsp;DWORD&nbsp;dwFlags)&nbsp;{<br/><br/>&nbsp;<br/><br/>printf&#40;\\\&#34;\\\\n\\\\nAttempting&nbsp;to&nbsp;read&nbsp;%s&#44;&nbsp;with&nbsp;0x%x&nbsp;flags\\\\n\\\&#34;&#44;<br/><br/>szFileName&#44;&nbsp;dwFlags);<br/><br/>&nbsp;<br/><br/>HANDLE&nbsp;hFile&nbsp;=&nbsp;Cr&#101;ateFile&#40;szFileName&#44;<br/><br/>GENERIC_READ&#44;&nbsp;FILE_SHARE_READ&#44;<br/><br/>NULL&#44;&nbsp;OPEN_EXISTING&#44;<br/><br/>dwFlags&#44;<br/><br/>NULL);<br/><br/>&nbsp;<br/><br/>if&nbsp;&#40;hFile&nbsp;==&nbsp;INVALID_HANDLE_VALUE)&nbsp;{<br/><br/>printf&#40;\\\&#34;Cr&#101;ateFile&#40;)&nbsp;failed&nbsp;-&gt;&nbsp;%d\\\&#34;&#44;&nbsp;GetLastError&#40;));<br/><br/>return;<br/><br/>}<br/><br/>&nbsp;<br/><br/>char&nbsp;buff[128];<br/><br/>DWORD&nbsp;cbRead=0&#44;&nbsp;cbBuff&nbsp;=&nbsp;sizeof&nbsp;buff;<br/><br/>ZeroMemory&#40;buff&#44;&nbsp;sizeof&nbsp;buff);<br/><br/>&nbsp;<br/><br/>if&nbsp;&#40;ReadFile&#40;hFile&#44;&nbsp;buff&#44;&nbsp;cbBuff&#44;&nbsp;&amp;cbRead&#44;&nbsp;NULL))&nbsp;{<br/><br/>printf&#40;\\\&#34;Success&#44;&nbsp;read&nbsp;%d&nbsp;bytes\\\\n\\\\nText&nbsp;is:&nbsp;%s\\\&#34;&#44;<br/><br/>cbRead&#44;&nbsp;buff);<br/><br/>}&nbsp;else&nbsp;{<br/><br/>printf&#40;\\\&#34;ReadFile&#40;)&nbsp;failed&nbsp;-&gt;&nbsp;%d\\\&#34;&#44;&nbsp;GetLastError&#40;));<br/><br/>}<br/><br/>CloseHandle&#40;hFile);<br/><br/>}<br/><br/>&nbsp;<br/><br/>void&nbsp;main&#40;int&nbsp;argc&#44;&nbsp;char*&nbsp;argv[])&nbsp;{<br/><br/>if&nbsp;&#40;argc&nbsp;&lt;&nbsp;2)&nbsp;{<br/><br/>printf&#40;\\\&#34;Usage:&nbsp;%s&nbsp;\\\&#34;&#44;&nbsp;argv[0]);<br/><br/>return;<br/><br/>}<br/><br/>&nbsp;<br/><br/>//&nbsp;Need&nbsp;to&nbsp;enable&nbsp;backup&nbsp;priv&nbsp;first.<br/><br/>if&nbsp;&#40;EnablePriv&#40;SE_BACKUP_NAME)&nbsp;==&nbsp;-1)&nbsp;<br/><br/>return;<br/><br/>&nbsp;<br/><br/>//&nbsp;Try&nbsp;with&nbsp;no&nbsp;backup&nbsp;flag&nbsp;-&nbsp;should&nbsp;get&nbsp;access&nbsp;denied.<br/><br/>DoIt&#40;argv[1]&#44;&nbsp;FILE_ATTRIBUTE_NORMAL);<br/><br/>&nbsp;<br/><br/>//&nbsp;Try&nbsp;with&nbsp;backup&nbsp;flag&nbsp;-&nbsp;should&nbsp;work!<br/><br/>DoIt&#40;argv[1]&#44;&nbsp;FILE_ATTRIBUTE_NORMAL&nbsp;│&nbsp;FILE_FLAG_BACKUP_SEMANTICS);<br/><br/>}<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>运行情况如下<br/><br/>&nbsp;<br/><br/>C:\\\\&gt;bkp<br/><br/>Usage:&nbsp;bkp&nbsp;<br/><br/>C:\\\\&gt;bkp&nbsp;test.txt<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>Attempting&nbsp;to&nbsp;read&nbsp;test.txt&#44;&nbsp;with&nbsp;0x80&nbsp;flags<br/><br/>Cr&#101;ateFile&#40;)&nbsp;failed&nbsp;-&gt;&nbsp;5<br/><br/>&nbsp;<br/><br/>Attempting&nbsp;to&nbsp;read&nbsp;test.txt&#44;&nbsp;with&nbsp;0x2000080&nbsp;flags<br/><br/>Success&#44;&nbsp;read&nbsp;20&nbsp;bytes<br/><br/>&nbsp;<br/><br/>Text&nbsp;is:&nbsp;writings&nbsp;this&nbsp;for&nbsp;cj<br/><br/>C:\\\\&gt;<br/><br/>&nbsp;<br/><br/>如上，使用了备份的标志后（with&nbsp;0x2000080&nbsp;flags）就可以访问开始拒绝访问的文件了。<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>　<br/><br/>2．利用SeTakeOwnershipPrivilege权限绕过访问控制<br/><br/>&nbsp;<br/><br/>在我的计算机上，tt是一个普通的user帐号，当给他添加上SeTakeOwnershipPrivilege后，就可以绕过原来的访问控制，比如，对system32目录下就可以添加完全控制的ACE，从而可以任意复制文件。对Document&nbsp;and&nbsp;Settings目录下也可以如法炮制，那么，给管理员下个套就是很简单的事情了。下面是实现过程<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>首先看下tt所具有的权限<br/><br/>C:\\\\&gt;whoami&nbsp;/all<br/><br/>[User]&nbsp;=&nbsp;\\\&#34;DARKDEAMON\\\\tt\\\&#34;&nbsp;S-1-5-21-1409082233-1957994488-472307971-1013<br/><br/>&nbsp;<br/><br/>[Group&nbsp;1]&nbsp;=&nbsp;\\\&#34;DARKDEAMON\\\\None\\\&#34;&nbsp;S-1-5-21-1409082233-1957994488-472307971-513<br/><br/>[Group&nbsp;2]&nbsp;=&nbsp;\\\&#34;Everyone\\\&#34;&nbsp;S-1-1-0<br/><br/>[Group&nbsp;3]&nbsp;=&nbsp;\\\&#34;BUILTIN\\\\Users\\\&#34;&nbsp;S-1-5-32-545<br/><br/>[Group&nbsp;4]&nbsp;=&nbsp;\\\&#34;NT&nbsp;AUTHORITY\\\\INTERACTIVE\\\&#34;&nbsp;S-1-5-4<br/><br/>[Group&nbsp;5]&nbsp;=&nbsp;\\\&#34;NT&nbsp;AUTHORITY\\\\Authenticated&nbsp;Users\\\&#34;&nbsp;S-1-5-11<br/><br/>[Group&nbsp;6]&nbsp;=&nbsp;\\\&#34;LOCAL\\\&#34;&nbsp;S-1-2-0<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&#40;O)&nbsp;SeCr&#101;atePagefilePrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeAssignPrimaryTokenPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeCr&#101;ateTokenPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeAuditPrivilege&nbsp;=<br/><br/>&#40;X)&nbsp;SeUndockPrivilege&nbsp;=<br/><br/>&#40;O)&nbsp;SeTakeOwnershipPrivilege&nbsp;=<br/><br/>&#40;X)&nbsp;SeChangeNotifyPrivilege&nbsp;=<br/><br/>&nbsp;<br/><br/>C:\\\\&gt;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>可以看到已经添加了SeTakeOwnershipPrivilege权限&#44;下面&#44;将演示如何取得对system32目录的完全控制<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/><br/>　<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>这是修改前的结果.<br/><br/>&nbsp;<br/><br/>下面我们来更改目录的所有者以得到完全控制.<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;<br/><br/>现在可以看到更改所有者已经激活&#44;所以我们只需要更改所有者就可以取得完全控制了。而在这个权限添加以前是无法进行这项操作的。<br/><br/>&nbsp;<br/><br/>　<br/><br/>　<br/><br/>3.利用SeDebugPrivilege权限来做坏事<br/><br/>&nbsp;<br/><br/>这个权限是极为危险的。它允许用户通过调试进程来访问秘密数据。典型的例子就是findpass。利用SeDebugPrivilege调试winlogon进程来获得明文存储在里面的域名和密码。<br/><br/>另一个典型的例子就是LSADUMP2，通过使用Cr&#101;ateRemoteThread函数来在LSASS.EXE进程中读取已经经过LSA解密的私有数据代码，从而查看LSA中存储的秘密信息。<br/><br/>&nbsp;<br/><br/>　<br/><br/>　<br/><br/>4.更进一步<br/><br/>&nbsp;<br/><br/>管理员（Administrator）默认具有16个权限<br/><br/>SeChangeNotifyPrivilege&nbsp;<br/>SeSecurityPrivilege&nbsp;<br/>SeBackupPrivilege&nbsp;<br/>SeRestorePrivilege&nbsp;<br/>SeSystemtimePrivilege&nbsp;<br/>SeShutdownPrivilege&nbsp;<br/>SeRemoteShutdownPrivilege&nbsp;<br/>SeTakeOwnershipPrivilege&nbsp;<br/>SeDebugPrivilege&nbsp;<br/>SeSystemEnvironmentPrivilege&nbsp;<br/>SeSystemProfilePrivilege&nbsp;<br/>SeProfileSingleProcessPrivilege&nbsp;<br/>SeIncreaseBasePriorityPrivilege<br/><br/>&nbsp;<br/><br/>然而，SeTcbPrivilege和SeCr&#101;ateTokenPrivilege两个权限管理员缺省是没有的.&nbsp;SeTcbPrivilege是具有操作系统的一部分来工作的权限，&#44;SeCr&#101;ateTokenPrivilege更为任意令牌创建权限！拥有了这两个权限&#44;用Lu0的话来说，就是可以超越administrator!<br/><br/>&nbsp;<br/><br/>从而提出另一种克隆管理员帐号的途径：克隆管理员的权限，甚至包括SeTcbPrivilege和SeCr&#101;ateTokenPrivilege两个权限！<br/><br/>&nbsp;<br/><br/>在这里使用到RESOURCE&nbsp;KIT中的一个工具：ntrights.exe<br/><br/>通过这个工具可以给指定帐号和组添加权限。<br/><br/>&nbsp;<br/><br/>下面是ntrights.exe的说明<br/><br/>ntrights&nbsp;{-r&nbsp;Right&nbsp;│&nbsp;+r&nbsp;Right}&nbsp;-u&nbsp;UserOrGroup&nbsp;[-m&nbsp;\\\\\\\\Computer]&nbsp;[-e&nbsp;Entry]&nbsp;[-?]<br/><br/>Wh&#101;re:<br/><br/>-r&nbsp;Right&nbsp;<br/><br/>revokes&nbsp;Right&nbsp;from&nbsp;specified&nbsp;user&nbsp;o&#114;&nbsp;group.&nbsp;For&nbsp;a&nbsp;full&nbsp;list&#44;&nbsp;see&nbsp;Windows&nbsp;2000&nbsp;Rights.&nbsp;<br/><br/>+r&nbsp;Right&nbsp;<br/><br/>grants&nbsp;Right&nbsp;to&nbsp;specified&nbsp;user&nbsp;o&#114;&nbsp;group.&nbsp;For&nbsp;a&nbsp;full&nbsp;list&#44;&nbsp;see&nbsp;Windows&nbsp;2000&nbsp;Rights.&nbsp;<br/><br/>-u&nbsp;UserOrGroup&nbsp;<br/><br/>specifies&nbsp;the&nbsp;user&nbsp;o&#114;&nbsp;group&nbsp;for&nbsp;whom&nbsp;rights&nbsp;are&nbsp;to&nbsp;be&nbsp;granted&nbsp;o&#114;&nbsp;revoked.&nbsp;<br/><br/>-m&nbsp;\\\\\\\\Computer&nbsp;<br/><br/>specifies&nbsp;the&nbsp;computer&nbsp;&#40;machine)&nbsp;on&nbsp;which&nbsp;to&nbsp;perform&nbsp;the&nbsp;operation.&nbsp;The&nbsp;default&nbsp;is&nbsp;the&nbsp;local&nbsp;computer.&nbsp;<br/><br/>-e&nbsp;Entry&nbsp;<br/><br/>adds&nbsp;a&nbsp;text&nbsp;string&nbsp;Entry&nbsp;to&nbsp;the&nbsp;computer\\\&#39;s&nbsp;event&nbsp;log.&nbsp;<br/><br/>-?&nbsp;<br/><br/>displays&nbsp;a&nbsp;syntax&nbsp;screen&nbsp;at&nbsp;the&nbsp;command&nbsp;prompt.&nbsp;<br/><br/>&nbsp;<br/><br/>下面是使用实例，&nbsp;<br/><br/>C:\\\\&gt;ntrights&nbsp;+r&nbsp;SeDebugPrivilege&nbsp;-u&nbsp;tt<br/><br/>Granting&nbsp;SeDebugPrivilege&nbsp;to&nbsp;tt&nbsp;...&nbsp;successful<br/>&nbsp;<br/>C:\\\\&gt;<br/>&nbsp;<br/>这样就成功给tt添加了SeDebugPrivilege的权限，其他权限也可以照样添加。如果是去除权限，则只需把+r变成-r就可以了。<br/>&nbsp;<br/>这样就实现了另一种意义上的克隆帐号，不过这样得到权限后仍然不能启动服务或添加帐号，比如net&nbsp;user&nbsp;ttt&nbsp;/add时发生拒绝错误，不知道这条命令是否会检查当前用户的SID，所以产生失败，还请高手指示。<br/>&nbsp;<br/>三．后记<br/><br/><br/>罗嗦写了这么多，是出于学习的目的，用wawa的话来说就是在写的过程中获益不少。由于水平有限，内容不免有错误之处，还请高手指正。<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=427" /> 
	  <id>http://www.d99net.net/default.asp?id=427</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Cr&#101;ateIoCompletionPort和完成端口 [转]]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=2" label="技术文章" /> 
	  <updated>2012-01-20T07:53:15+08:00</updated>
	  <published>2012-01-20T07:53:15+08:00</published>
		  <summary type="html"><![CDATA[摘自《Networking&nbsp;Programming&nbsp;for&nbsp;Microsoft&nbsp;Windows》第八章<br/><br/>“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而，假若一个应用程序同时需要管理为数众多的套接字，那么采用这种模型，往往可以达到最佳的系统性能！<br/><br/>从本质上说，完成端口模型要求我们创建一个Win32完成端口对象，通过指定数量的线程，对重叠I/O请求进行管理，以便为已经完成的重叠I/O请求提供服务。<br/><br/>使用这种模型之前，首先要创建一个I/O完成端口对象，用它面向任意数量的套接字句柄，管理多个I/O请求。要做到这一点，需要调用Cr&#101;ateCompletionPort函数。<br/>该函数定义如下：<br/>HANDLE&nbsp;Cr&#101;ateIoCompletionPort&#40;<br/>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;FileHandle&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;ExistingCompletionPort&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ULONG_PTR&nbsp;CompletionKey&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;NumberOfConcurrentThreads<br/>);<br/><br/>在我们深入探讨其中的各个参数之前，首先要注意该函数实际用于两个明显有别的目的：<br/>1.&nbsp;用于创建一个完成端口对象。<br/>2.&nbsp;将一个句柄同完成端口关联到一起。<br/><br/>最开始创建一个完成端口时，唯一感兴趣的参数便是NumberOfConcurrentThreads（并发线程的数量）；前面三个参数都会被忽略。&nbsp;NumberOfConcurrentThreads参数的特殊之处在于，它定义了在一个完成端口上，同时允许执行的线程数量。理想情况下，我们希望每个处理器各自负责一个线程的运行，为完成端口提供服务，避免过于频繁的线程“场景”切换。若将该参数设为0，表明系统内安装了多少个处理器，便允许同时运行多少个线程！可用下述代码创建一个I/O完成端口：<br/>hIOCP&nbsp;=&nbsp;Cr&#101;ateIoCompletionPort&#40;INVALID_HANDLE_VALUE&#44;&nbsp;NULL&#44;&nbsp;0&#44;&nbsp;0);<br/><br/>该语句的作用是返回一个句柄，在为完成端口分配了一个套接字句柄后，用来对那个端口进行标定（引用）。<br/><br/>一、工作者线程与完成端口<br/>成功创建一个完成端口后，便可开始将套接字句柄与对象关联到一起。但在关联套接字之前，首先必须创建一个或多个“工作者线程”，以便在I/O请求投递给完成端口对象后，为完成端口提供服务。在这个时候，大家或许会觉得奇怪，到底应创建多少个线程，以便为完成端口提供服务呢？这实际正是完成端口模型显得颇为&nbsp;“复杂”的一个方面，因为服务I/O请求所需的数量取决于应用程序的总体设计情况。在此要记住的一个重点在于，在我们调用&nbsp;Cr&#101;ateIoCompletionPort时指定的并发线程数量，与打算创建的工作者线程数量相比，它们代表的并非同一件事情。早些时候，我们曾建议大家用Cr&#101;ateIoCompletionPort函数为每个处理器<br/>都指定一个线程（处理器的数量有多少，便指定多少线程）以避免由于频繁的线程“场景”交换活动，从而影响系统的整体性能。Cr&#101;ateIoCompletionPort函数的NumberOfConcurrentThreads&nbsp;参数明确指示系统：在一个完成端口上，一次只允许n个工作者线程运行。假如在完成端口上创建的工作者线程数量超出n个，那么在同一时刻，最多只允许n个线程运行。但实际上，在一段较短的时间内，系统有可能超过这个值，但很快便会把它减少至事先在Cr&#101;ateIoCompletionPort函数中设定的值。那么，为何实际创建的工作者线程数量有时要比Cr&#101;ateIoCompletionPort函数设定的多一些呢？这样做有必要吗？如先前所述，这主要取决于<br/>应用程序的总体设计情况。假定我们的某个工作者线程调用了一个函数，比如Sleep或WaitForSingleObject，但却进入了暂停（锁定或挂起）状态，那么允许另一个线程代替它的位置。换言之，我们希望随时都能执行尽可能多的线程；当然，最大的线程数量是事先在&nbsp;Cr&#101;ateIoCompletionPort调用里设定好的。这样一来，假如事先预计到自己的线程有可能暂时处于停顿状态，那么最好能够创建比&nbsp;Cr&#101;ateIoCompletionPort的NumberOfConcurrentThreads参数的值多的线程，以便到时候充分发挥系统的潜力。一旦在完成端口上拥有足够多的工作者线程来为I/O请求提供服务，便可着手将套接字句柄同完成端口关联到一起。这要求我们在一个现有的完成端口上，调用Cr&#101;ateIoCompletionPort函数，同时为前三个参数——FileHandle，ExistingCompletionPort和&nbsp;CompletionKey——提供套接字的信息。其中，FileHandle参数指定一个要同完成端口关联在一起的套接字句柄。ExistingCompletionPort参数指定的是一个现有的完成端口。&nbsp;CompletionKey（完成键）参数则指定要与某个特定套接字句柄关联在一起的“单句柄数据”；在这个参数中，应用程序可保存与一个套接字对应的任意类型的信息。之所以把它叫作“单句柄数据”，是由于它只对<br/>应着与那个套接字句柄关联在一起的数据。可将其作为指向一个数据结构的指针，来保存套接字句柄；在那个结构中，同时包含了套接字的句柄，以及与那个套接字有关的其他信息。<br/><br/>根据我们到目前为止学到的东西，首先来构建一个基本的应用程序框架。下面阐述了如何使用完成端口模型，来开发一个ECHO服务器应用。在这个程序中，我们基本上按下述步骤行事：<br/><br/>1)&nbsp;创建一个完成端口。第四个参数保持为0，指定在完成端口上，每个处理器一次只允许执行一个工作者线程。<br/>2)&nbsp;判断系统内到底安装了多少个处理器。<br/>3)&nbsp;创建工作者线程，根据步骤2)得到的处理器信息，在完成端口上，为已完成的I/O请求提供服务。<br/>4)&nbsp;准备好一个监听套接字，在端口5150上监听进入的连接请求。<br/>5)&nbsp;使用accept函数，接受进入的连接请求。<br/>6)&nbsp;创建一个数据结构，用于容纳“单句柄数据”，同时在结构中存入接受的套接字句柄。<br/>7)&nbsp;调用Cr&#101;ateIoCompletionPort，将自accept返回的新套接字句柄同完成端口关联到一起。通过完成键（CompletionKey）参数，将单句柄数据结构传递给Cr&#101;ateIoCompletionPort。<br/>8)&nbsp;开始在已接受的连接上进行I/O操作。在此，我们希望通过重叠I/O机制，在新建的套接字上投递一个或多个异步WSARecv或WSASend请求。这些&nbsp;I/O请求完成后，一个工作者线程会为I/O请求提供服务，同时继续处理未来的I/O请求，稍后便会在步骤3&nbsp;)指定的工作者例程中，体验到这一点。<br/>9)&nbsp;重复步骤5&nbsp;)&nbsp;~&nbsp;8&nbsp;)，直至服务器中止。<br/><br/>二、完成端口和重叠I/O<br/>将套接字句柄与一个完成端口关联在一起后，便可以套接字句柄为基础，投递发送与接收请求，开始对I/O请求的处理。接下来，可开始依赖完成端口，来接收有关&nbsp;I/O操作完成情况的通知。从本质上说，完成端口模型利用了Win32重叠I/O机制。在这种机制中，象WSASend和WSARecv这样的&nbsp;Winsock&nbsp;API调用会立即返回。此时，需要由我们的应用程序负责在以后的某个时间，通过一个OVERLAPPED结构，来接收调用的结果。在完成端口模型中，要想做到这一点，需要使用GetQueuedCompletionStatus（获取排队完成状态）函数，让一个或多个工作者线程在完成端口上等待。该函数的定义如下：<br/>BOOL&nbsp;GetQueuedCompletionStatus&#40;<br/>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;CompletionPort&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;LPDWORD&nbsp;lpNumberOfBytes&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;PULONG_PTR&nbsp;lpCompletionKey&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;LPOVERLAPPED*&nbsp;lpOverlapped&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwMilliseconds<br/>);<br/><br/>其中，CompletionPort参数对应于要在上面等待的完成端口。lpNumberOfBytes参数负责在完成了一次I/O操作后（如&nbsp;WSASend或WSARecv），接收实际传输的字节数。lpCompletionKey参数为原先传递进入&nbsp;Cr&#101;ateIoCompletionPort函数的套接字返回“单句柄数据”。如我们早先所述，大家最好将套接字句柄保存在这个“键”（Key）中。&nbsp;lpOverlapped参数用于接收完成的I/O操作的重叠结果。这实际是一个相当重要的参数，因为可用它获取每个I/O操作的数据。而最后一个参数，dwMilliseconds，用于指定调用者希望等待一个完成数据包在完成端口上出现的时间。假如将其设为INFINITE，调用会无休止地等待下去。<br/><br/>三、单句柄数据和单I/O操作数据<br/>一个工作者线程从GetQueuedCompletionStatus这个API调用接收到I/O完成通知后，在lpCompletionKey和lpOverlapped参数中，会包含一些必要的套接字信息。利用这些信息，可通过完成端口，继续在一个套接字上的I/O处理。通过这些参数，可获得两方面重要的套接字数据：单句柄数据，以及单I/O操作数据。其中，lpCompletionKey参数包含了“单句柄数据”，因为在一个套接字首次与完成端口关联到一起的时候，那些数据便与一个特定的套接字句柄对应起来了。这些数据正是我们在进行Cr&#101;ateIoCompletionPort&nbsp;API调用的时候，通过CompletionKey参数传递的。如早先所述，应用程序可通过该参数传递任意类型的数据。通常情况下，应用程序会将与I/O&nbsp;请求有关的套接字句柄保存在这里。lpOverlapped参数则包含了一个OVERLAPPED结构，在它后面跟随“单I/O操作数据”。我们的工作者线程处理一个完成数据包时（将数据原封不动打转回去，接受连接，投递另一个线程，等等），这些信息是它必须要知道的。单I/O操作数据可以是追加到一个&nbsp;OVERLAPPED结构末尾的、任意数量的字节。假如一个函数要求用到一个OVERLAPPED结构，我们便必须将这样的一个结构传递进去，以满足它的要求。要想做到这一点，一个简单的方法是定义一个结构，然后将OVERLAPPED结构作为新结构的第一个元素使用。举个例子来说，可定义下述数据结构，实现对单I/O操作数据的管理：<br/>typedef&nbsp;struct<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;OVERLAPPED&nbsp;Overlapped;<br/>&nbsp;&nbsp;&nbsp;&nbsp;WSABUF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataBuf;<br/>&nbsp;&nbsp;&nbsp;&nbsp;CHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Buffer[DATA_BUFSIZE];<br/>&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OperationType;<br/>}PER_IO_OPERATION_DATA<br/><br/>该结构演示了通常要与I/O操作关联在一起的某些重要数据元素，比如刚才完成的那个I/O操作的类型（发送或接收请求）。在这个结构中，我们认为用于已完成&nbsp;I/O操作的数据缓冲区是非常有用的。要想调用一个Winsock&nbsp;API函数，同时为其分配一个OVERLAPPED结构，既可将自己的结构“造型”为一个OVERLAPPED指针，亦可简单地撤消对结构中的&nbsp;OVERLAPPED元素的引用。如下例所示：<br/>PER_IO_OPERATION_DATA&nbsp;PerIoData;<br/>//&nbsp;可像下面这样调用一个函数<br/>&nbsp;&nbsp;WSARecv&#40;socket&#44;&nbsp;...&#44;&nbsp;&#40;OVERLAPPED&nbsp;*)&amp;PerIoData);<br/>//&nbsp;或像这样<br/>&nbsp;&nbsp;WSARecv&#40;socket&#44;&nbsp;...&#44;&nbsp;&amp;&#40;PerIoData.Overlapped));<br/><br/>在工作线程的后面部分，等GetQueuedCompletionStatus函数返回了一个重叠结构（和完成键）后，便可通过撤消对&nbsp;OperationType成员的引用，调查到底是哪个操作投递到了这个句柄之上（只需将返回的重叠结构造型为自己的&nbsp;PER_IO_OPERATION_DATA结构）。对单I/O操作数据来说，它最大的一个优点便是允许我们在同一个句柄上，同时管理多个I/O操作（读&nbsp;/写，多个读，多个写，等等）。大家此时或许会产生这样的疑问：在同一个套接字上，真的有必要同时投递多个I/O操作吗？答案在于系统的“伸缩性”，或者说“扩展能力”。例如，假定我们的机器安装了多个中央处理器，每个处理器都在运行一个工作者线程，那么在同一个时<br/>候，完全可能有几个不同的处理器在同一个套接字上，进行数据的收发操作。<br/><br/>最后要注意的一处细节是如何正确地关闭I/O完成端口—特别是同时运行了一个或多个线程，在几个不同的套接字上执行I/O操作的时候。要避免的一个重要问题是在进行重叠I/O操作的同时，强行释放一个OVERLAPPED结构。要想避免出现这种情况，最好的办法是针对每个套接字句柄，调用&nbsp;closesocket函数，任何尚未进行的重叠I/O操作都会完成。一旦所有套接字句柄都已关闭，便需在完成端口上，终止所有工作者线程的运行。要想做到这一点，&nbsp;需要使用PostQueuedCompletionStatus函数，向每个工作者线程都发送一个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”。下面是PostQueuedCompletionStatus函数的定义：<br/>BOOL&nbsp;PostQueuedCompletionStatus&#40;<br/>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;CompletionPort&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwNumberOfBytesTransferred&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ULONG_PTR&nbsp;dwCompletionKey&#44;<br/>&nbsp;&nbsp;&nbsp;&nbsp;LPOVERLAPPED&nbsp;lpOverlapped<br/>);<br/><br/><br/>其中，CompletionPort参数指定想向其发送一个完成数据包的完成端口对象。而就dwNumberOfBytesTransferred、&nbsp;dwCompletionKey和lpOverlapped这三个参数来说，每一个都允许我们指定一个值，直接传递给&nbsp;GetQueuedCompletionStatus函数中对应的参数。这样一来，一个工作者线程收到传递过来的三个&nbsp;GetQueuedCompletionStatus函数参数后，便可根据由这三个参数的某一个设置的特殊值，决定何时应该退出。例如，可用&nbsp;dwCompletionPort参数传递0值，而一个工作者线程会将其解释成中止指令。一旦所有工作者线程都已关闭，便可使用CloseHandle函数，关闭完成端口，最终安全退出程序。<br/><br/>注：Cr&#101;ateIoCompletionPort&nbsp;，PostQueuedCompletionStatus&nbsp;，GetQueuedCompletionStatus&nbsp;等函数的用法说明。<br/><br/>Platform.&nbsp;SDK:&nbsp;Storage<br/><br/>I/O&nbsp;Completion&nbsp;Ports<br/><br/>I/O&nbsp;completion&nbsp;ports&nbsp;are&nbsp;the&nbsp;mechanism&nbsp;by&nbsp;which&nbsp;an&nbsp;application&nbsp;uses&nbsp;a&nbsp;pool&nbsp;of&nbsp;threads&nbsp;that&nbsp;was&nbsp;cr&#101;ated&nbsp;when&nbsp;the&nbsp;application&nbsp;was&nbsp;started&nbsp;to&nbsp;process&nbsp;asynchronous&nbsp;I/O&nbsp;requests.&nbsp;These&nbsp;threads&nbsp;are&nbsp;cr&#101;ated&nbsp;for&nbsp;the&nbsp;sole&nbsp;purpose&nbsp;of&nbsp;processing&nbsp;I/O&nbsp;requests.&nbsp;Applications&nbsp;that&nbsp;process&nbsp;many&nbsp;concurrent&nbsp;asynchronous&nbsp;I/O&nbsp;requests&nbsp;can&nbsp;do&nbsp;so&nbsp;more&nbsp;quickly&nbsp;and&nbsp;efficiently&nbsp;by&nbsp;using&nbsp;I/O&nbsp;completion&nbsp;ports&nbsp;than&nbsp;by&nbsp;using&nbsp;creating&nbsp;threads&nbsp;at&nbsp;the&nbsp;time&nbsp;of&nbsp;the&nbsp;I/O&nbsp;request.<br/><br/>&nbsp;<br/><br/>I/O&nbsp;完成端口&#40;s)是一种机制，通过这个机制，应用程序在启动时会首先创建一个线程池，然后该应用程序使用线程池处理异步I/O请求。这些线程被创建的唯一目的就是用于处理I/O请求。对于处理大量并发异步I/O请求的应用程序来说，相比于在I/O请求发生时创建线程来说，使用完成端口&#40;s)它就可以做的更快且更有效率。<br/><br/>&nbsp;<br/><br/>The&nbsp;Cr&#101;ateIoCompletionPort&nbsp;function&nbsp;associates&nbsp;an&nbsp;I/O&nbsp;completion&nbsp;port&nbsp;with&nbsp;one&nbsp;o&#114;&nbsp;more&nbsp;file&nbsp;handles.&nbsp;When&nbsp;an&nbsp;asynchronous&nbsp;I/O&nbsp;operation&nbsp;started&nbsp;on&nbsp;a&nbsp;file&nbsp;handle&nbsp;associated&nbsp;with&nbsp;a&nbsp;completion&nbsp;port&nbsp;is&nbsp;completed&#44;&nbsp;an&nbsp;I/O&nbsp;completion&nbsp;packet&nbsp;is&nbsp;queued&nbsp;to&nbsp;the&nbsp;port.&nbsp;This&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;combine&nbsp;the&nbsp;synchronization&nbsp;point&nbsp;for&nbsp;multiple&nbsp;file&nbsp;handles&nbsp;into&nbsp;a&nbsp;single&nbsp;object.<br/><br/>&nbsp;<br/><br/>Cr&#101;ateIoCompletionPort函数会使一个I/O完成端口与一个或多个文件句柄发生关联。当与一个完成端口相关的文件句柄上启动的异步I/O操作完成时，一个I/O完成包就会进入到该完成端口的队列中。对于多个文件句柄来说，就可以把这些多个文件句柄合并成一个单独的对象，这个可以被用来结合同步点？<br/><br/>&nbsp;<br/><br/>A&nbsp;thread&nbsp;uses&nbsp;the&nbsp;GetQueuedCompletionStatus&nbsp;function&nbsp;to&nbsp;wait&nbsp;for&nbsp;a&nbsp;completion&nbsp;packet&nbsp;to&nbsp;be&nbsp;queued&nbsp;to&nbsp;the&nbsp;completion&nbsp;port&#44;&nbsp;rather&nbsp;than&nbsp;waiting&nbsp;directly&nbsp;for&nbsp;the&nbsp;asynchronous&nbsp;I/O&nbsp;to&nbsp;complete.&nbsp;Threads&nbsp;that&nbsp;block&nbsp;their&nbsp;execution&nbsp;on&nbsp;a&nbsp;completion&nbsp;port&nbsp;are&nbsp;released&nbsp;in&nbsp;last-in-first-out&nbsp;&#40;LIFO)&nbsp;o&#114;der.&nbsp;This&nbsp;means&nbsp;that&nbsp;when&nbsp;a&nbsp;completion&nbsp;packet&nbsp;is&nbsp;queued&nbsp;to&nbsp;the&nbsp;completion&nbsp;port&#44;&nbsp;the&nbsp;system&nbsp;releases&nbsp;the&nbsp;last&nbsp;thread&nbsp;to&nbsp;block&nbsp;its&nbsp;execution&nbsp;on&nbsp;the&nbsp;port.<br/><br/>调用GetQueuedCompletionStatus函数，某个线程就会等待一个完成包进入到完成端口的队列中，而不是直接等待异步I/O请求完成。线程（们）就会阻塞于它们的运行在完成端口（按照后进先出队列顺序的被释放）。这就意味着当一个完成包进入到完成端口的队列中时，系统会释放最近被阻塞在该完成端口的线程。<br/><br/>&nbsp;<br/><br/>When&nbsp;a&nbsp;thread&nbsp;calls&nbsp;GetQueuedCompletionStatus&#44;&nbsp;it&nbsp;is&nbsp;associated&nbsp;with&nbsp;the&nbsp;specified&nbsp;completion&nbsp;port&nbsp;until&nbsp;it&nbsp;exits&#44;&nbsp;specifies&nbsp;a&nbsp;different&nbsp;completion&nbsp;port&#44;&nbsp;o&#114;&nbsp;frees&nbsp;the&nbsp;completion&nbsp;port.&nbsp;A&nbsp;thread&nbsp;can&nbsp;be&nbsp;associated&nbsp;with&nbsp;at&nbsp;most&nbsp;one&nbsp;completion&nbsp;port.<br/><br/>调用GetQueuedCompletionStatus，线程就会将会与某个指定的完成端口建立联系，一直延续其该线程的存在周期，或被指定了不同的完成端口，或者释放了与完成端口的联系。一个线程只能与最多不超过一个的完成端口发生联系。<br/><br/>&nbsp;<br/><br/>The&nbsp;most&nbsp;important&nbsp;property&nbsp;of&nbsp;a&nbsp;completion&nbsp;port&nbsp;is&nbsp;the&nbsp;concurrency&nbsp;value.&nbsp;The&nbsp;concurrency&nbsp;value&nbsp;of&nbsp;a&nbsp;completion&nbsp;port&nbsp;is&nbsp;specified&nbsp;when&nbsp;the&nbsp;completion&nbsp;port&nbsp;is&nbsp;cr&#101;ated.&nbsp;This&nbsp;value&nbsp;limits&nbsp;the&nbsp;number&nbsp;of&nbsp;runnable&nbsp;threads&nbsp;associated&nbsp;with&nbsp;the&nbsp;completion&nbsp;port.&nbsp;When&nbsp;the&nbsp;total&nbsp;number&nbsp;of&nbsp;runnable&nbsp;threads&nbsp;associated&nbsp;with&nbsp;the&nbsp;completion&nbsp;port&nbsp;reaches&nbsp;the&nbsp;concurrency&nbsp;value&#44;&nbsp;the&nbsp;system&nbsp;blocks&nbsp;the&nbsp;execution&nbsp;of&nbsp;any&nbsp;subsequent&nbsp;threads&nbsp;that&nbsp;specify&nbsp;the&nbsp;completion&nbsp;port&nbsp;until&nbsp;the&nbsp;number&nbsp;of&nbsp;runnable&nbsp;threads&nbsp;associated&nbsp;with&nbsp;the&nbsp;completion&nbsp;port&nbsp;dro&#112;s&nbsp;below&nbsp;the&nbsp;concurrency&nbsp;value.&nbsp;The&nbsp;most&nbsp;efficient&nbsp;scenario&nbsp;occurs&nbsp;when&nbsp;there&nbsp;are&nbsp;completion&nbsp;packets&nbsp;waiting&nbsp;in&nbsp;the&nbsp;queue&#44;&nbsp;but&nbsp;no&nbsp;waits&nbsp;can&nbsp;be&nbsp;satisfied&nbsp;because&nbsp;the&nbsp;port&nbsp;has&nbsp;reached&nbsp;its&nbsp;concurrency&nbsp;limit.&nbsp;In&nbsp;this&nbsp;case&#44;&nbsp;when&nbsp;a&nbsp;running&nbsp;thread&nbsp;calls&nbsp;GetQueuedCompletionStatus&#44;&nbsp;it&nbsp;will&nbsp;immediately&nbsp;pick&nbsp;up&nbsp;the&nbsp;queued&nbsp;completion&nbsp;packet.&nbsp;No&nbsp;context&nbsp;switches&nbsp;will&nbsp;occur&#44;&nbsp;because&nbsp;the&nbsp;running&nbsp;thread&nbsp;is&nbsp;continually&nbsp;picking&nbsp;up&nbsp;completion&nbsp;packets&nbsp;and&nbsp;the&nbsp;other&nbsp;threads&nbsp;are&nbsp;unable&nbsp;to&nbsp;run.<br/><br/>完成端口最重要的特性就是并发量。完成端口的并发量可以在创建该完成端口时指定。该并发量限制了与该完成端口相关联的可运行线程的数目。当与该完成端口相关联的可运行线程的总数目达到了该并发量，系统就会阻塞任何与该完成端口相关联的后续线程的执行，直到与该完成端口相关联的可运行线程数目下降到小于该并发量为止。最有效的假想是发生在有完成包在队列中等待，而没有等待被满足，因为此时完成端口达到了其并发量的极限。此时，一个正在运行中的线程调用GetQueuedCompletionStatus时，它就会立刻从队列中取走该完成包。这样就不存在着环境的切换，因为该处于运行中的线程就会连续不断地从队列中取走完成包，而其他的线程就不能运行了。<br/><br/>&nbsp;<br/><br/>The&nbsp;best&nbsp;value&nbsp;to&nbsp;pick&nbsp;for&nbsp;the&nbsp;concurrency&nbsp;value&nbsp;is&nbsp;the&nbsp;number&nbsp;of&nbsp;CPUs&nbsp;on&nbsp;the&nbsp;machine.&nbsp;If&nbsp;your&nbsp;transaction&nbsp;required&nbsp;a&nbsp;lengthy&nbsp;computation&#44;&nbsp;a&nbsp;larger&nbsp;concurrency&nbsp;value&nbsp;will&nbsp;allow&nbsp;more&nbsp;threads&nbsp;to&nbsp;run.&nbsp;Each&nbsp;transaction&nbsp;will&nbsp;take&nbsp;longer&nbsp;to&nbsp;complete&#44;&nbsp;but&nbsp;more&nbsp;transactions&nbsp;will&nbsp;be&nbsp;processed&nbsp;at&nbsp;the&nbsp;same&nbsp;time.&nbsp;It&nbsp;is&nbsp;easy&nbsp;to&nbsp;experiment&nbsp;with&nbsp;the&nbsp;concurrency&nbsp;value&nbsp;to&nbsp;achieve&nbsp;the&nbsp;best&nbsp;effect&nbsp;for&nbsp;your&nbsp;application.<br/><br/>对于并发量最好的挑选值就是您计算机中cpu的数目。如果您的事务处理需要一个漫长的计算时间，一个比较大的并发量可以允许更多线程来运行。虽然完成每个事务处理需要花费更长的时间，但更多的事务可以同时被处理。对于应用程序来说，很容易通过测试并发量来获得最好的效果。<br/><br/>&nbsp;<br/><br/>The&nbsp;PostQueuedCompletionStatus&nbsp;function&nbsp;allows&nbsp;an&nbsp;application&nbsp;to&nbsp;queue&nbsp;its&nbsp;own&nbsp;special-purpose&nbsp;I/O&nbsp;completion&nbsp;packets&nbsp;to&nbsp;the&nbsp;completion&nbsp;port&nbsp;without&nbsp;starting&nbsp;an&nbsp;asynchronous&nbsp;I/O&nbsp;operation.&nbsp;This&nbsp;is&nbsp;useful&nbsp;for&nbsp;notifying&nbsp;worker&nbsp;threads&nbsp;of&nbsp;external&nbsp;events.<br/><br/>PostQueuedCompletionStatus函数允许应用程序可以针对自定义的专用I/O完成包进行排队，而无需启动一个异步I/O操作。这点对于通知外部事件的工作者线程来说很有用。<br/><br/>&nbsp;<br/><br/>The&nbsp;completion&nbsp;port&nbsp;is&nbsp;freed&nbsp;when&nbsp;there&nbsp;are&nbsp;no&nbsp;more&nbsp;references&nbsp;to&nbsp;it.&nbsp;The&nbsp;completion&nbsp;port&nbsp;handle&nbsp;and&nbsp;every&nbsp;file&nbsp;handle&nbsp;associated&nbsp;with&nbsp;the&nbsp;completion&nbsp;port&nbsp;reference&nbsp;the&nbsp;completion&nbsp;port.&nbsp;All&nbsp;the&nbsp;handles&nbsp;must&nbsp;be&nbsp;closed&nbsp;to&nbsp;free&nbsp;the&nbsp;completion&nbsp;port.&nbsp;To&nbsp;close&nbsp;the&nbsp;port&nbsp;handle&#44;&nbsp;call&nbsp;the&nbsp;CloseHandle&nbsp;function.<br/><br/>在没有更多的引用针对某个完成端口时，需要释放该完成端口。该完成端口句柄以及与该完成端口相关联的所有文件句柄都需要被释放。调用CloseHandle可以释放完成端口的句柄。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=426" /> 
	  <id>http://www.d99net.net/default.asp?id=426</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[D盾_IIS防火墙 V1.37.3]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=3" label="我的软件" /> 
	  <updated>2012-01-07T22:52:49+08:00</updated>
	  <published>2012-01-07T22:52:49+08:00</published>
		  <summary type="html"><![CDATA[请到这里查看<br/><a href="http://bbs.d99net.net/thread.php?fid=4" target="_blank">http://bbs.d99net.net/thread.php?fid=4</a><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=425" /> 
	  <id>http://www.d99net.net/default.asp?id=425</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[为 D盾_IIS防火墙 开设反馈论坛]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=1" label="杂谈" /> 
	  <updated>2012-01-04T09:22:07+08:00</updated>
	  <published>2012-01-04T09:22:07+08:00</published>
		  <summary type="html"><![CDATA[为了更好的让用户反馈&nbsp;D盾&nbsp;问题&#44;1月4号建了个论坛&#44;方便用户反馈问题。有软件问题请和我说说吧。<br/>因时间有限，所以论坛暂时不会有太多内容，只作反馈之用。<br/>到于用户&nbsp;反馈&nbsp;的问题，将在最近的版本更新。因正在研究&nbsp;3389&nbsp;相关防御功能，须测试和编写代码，新版本需要点时间。&nbsp;<br/><br/>D盾_IIS防火墙&nbsp;主页&nbsp;<a href="http://security.d99net.net/" target="_blank">http://security.d99net.net/</a><br/>论址地址：<a href="http://bbs.d99net.net/index.php?m=bbs" target="_blank">http://bbs.d99net.net/index.php?m=bbs</a>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=424" /> 
	  <id>http://www.d99net.net/default.asp?id=424</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[D盾_IIS防火墙 V1.36版 [2011-12-14]]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=3" label="我的软件" /> 
	  <updated>2011-12-14T15:48:48+08:00</updated>
	  <published>2011-12-14T15:48:48+08:00</published>
		  <summary type="html"><![CDATA[2011-12-14&nbsp;&nbsp;V1.36&nbsp;版<br/>对“星外”主机的特殊情况做兼容处理。<br/>目录设置加载是否禁止生成特殊文件。<br/>下载：停止下载<br/><br/>2011-12-12&nbsp;&nbsp;V1.35&nbsp;版<br/>有用户反映，因新版限制过严格，导致ASPX不正常，请新搞一个版本，目录信息可以由用户修改，应该生成DLL问题已没有。<br/><br/>下载：停止下载<br/><br/>也提供旧版本&#40;V1.32)的下载&nbsp;:停止下载<br/><br/>2011-12-10&nbsp;&nbsp;V1.33&nbsp;版<br/>1.修正COOKIE的误拦截问题&#40;所以建议更新)。<br/>2.加强了注入的U编码的拦截<br/>3.更细的记录，允许保存记录。<br/>4.对一些系统目录进一步加强设置。<br/>禁列C\WINDOWS\Microsoft.NET\Framework\V****\Temporary&nbsp;ASP.NET&nbsp;Files\root&nbsp;下的内容禁止列出，防止入侵者得到有用信息。<br/>5.目录编辑时，允许更改目录位置。<br/>6.加强对同类产品的兼容。<br/>7.软件已制作成安装包，方便安装和卸载，加入有更新提示，和手动更新功能。<br/>8.新增了特殊文件的拦截<br/><br/>下载地址:暂停下载<br/><br/><br/><img src="http://www.d99net.net/attachments/month_1111/d2011111155036.jpg" border="0" alt=""/><br/>全新打造新一代IIS保护软件，内外保护。<br/>专为IIS设计的一个主动防御的保护软件&#44;以内外保护的方式防止网站和服务器<br/>给入侵&#44;在正常运行各类网站的情况下，越少的功能，服务器越安全的理念而设计！<br/>限制了常见的入侵方法，让服务器更安全！<br/>===================================================<br/><span style="color:Red">最新加入防脚本DDOS&nbsp;&#40;如&nbsp;PHP&nbsp;DDOS)&#44;让服务器带宽不会再给大量占用！<br/>独创的“只允许某脚本类型执行”有效防范执行一些非法脚本！<br/>独创的“MSSQL错误报数据库信息”让，黑客获的信息更困难！<br/>新增特定目录禁止执行脚本，让服务器的图片和上传目录不再是危害。<br/>防范软件扫描目录结构，让入侵者无法知道你站的目录和文件结构，让入侵者更头痛！</span><br/><br/><span style="font-size:16pt"><span style="color:Red">软件暂时只支持&nbsp;win2003&nbsp;32位和64位系统，不支持2008系统</span></span><br/><br/><img src="http://www.d99net.net/attachments/month_1111/72011111154647.jpg" border="0" alt=""/><br/><br/>【目录限制】<br/><img src="http://www.d99net.net/attachments/month_1111/r2011111155058.jpg" border="0" alt=""/><br/>全新版本，目录权限设置更丰富，满足各种不同的目录权限要求。<br/>限制文件的写入未指定的目录&#44;一般情况下，只要WEB目录和Temp目录设置不<br/>给执行权限，别的目录不用处理也不因有可写目录给利用上！很多服务器给<br/>拿下就是因为系统某一个目录和文件可写并能执行&#40;aspx一般都能执行)导致!<br/>禁止列目录，就是不给显示目录里的文件内容！需要注意的是，软件并不会<br/>更改目录的权限，如果你原目录权限为只读，软件列表加入允许也将不能写<br/>入，因为软件通过，并不表示权限检测会通过！<br/><br/>【执行限制】<br/><img src="http://www.d99net.net/attachments/month_1111/c2011111155240.jpg" border="0" alt=""/><br/>新版加入添加允许执行白名单功能，请你要的程序也可以运行。<br/>执行可以说是危害性很多的一个功能，所以必须禁止执行，禁止了很多问题都不会<br/>出现！&#40;因为禁止了执行，以前搞的低权限保护功能我去掉了)<br/>禁止写入PE文件，不管什么扩展名的执行文件，都将不给上传到服务器，这可以降<br/>低给提权的机率！<br/><br/>网络限制<br/><img src="http://www.d99net.net/attachments/month_1111/8201111115545.jpg" border="0" alt=""/><br/><span style="color:Red">禁止UDP向外发送，可有效防范UDP的DDOS攻击，如PHPDDOS等，有效限制网络带宽给黑意占用&#40;WEB进程里一般不会用到UDP协议，可以放心禁用)！</span><br/><br/>这是禁止脚本连接本机的一些端口，如Serv-U的本地管理端口&#44;这就是常见的Serv-U提权了，<br/>也防止某些软件端口给利用，也防止了内部端口给中转了出去！<br/><img src="http://www.d99net.net/attachments/month_1108/i2011813112659.JPG" border="0" alt=""/><br/><br/>组件限制<br/><img src="http://www.d99net.net/attachments/month_1111/42011111155437.jpg" border="0" alt=""/><br/>此功能是用于禁止一些危险或没必要开放的组件&#40;如:执行组件&#44;WMI等)，&nbsp;禁用之後<br/>不会影响到其他软件正常使用这些组件。<br/><br/><br/>注入防御<br/><img src="http://www.d99net.net/attachments/month_1111/y2011111155452.jpg" border="0" alt=""/><br/>注入防御就是防止因网站存在注入问题而给入侵！<br/><br/>更多的保护功能<br/><img src="http://www.d99net.net/attachments/month_1111/n2011111155530.jpg" border="0" alt=""/><br/><br/>【禁止下载某文件类型】<br/>防止不该给下载的文件给下载&#44;防止信息外露！<br/><br/>【允许执行的脚本扩展名】<br/>有效的防止未经允许的扩展名脚本恶意执行<br/>如：CER&#44;CDX&nbsp;等扩展名的木马。或是&nbsp;/1.asp/1.gif&nbsp;等会执行的情况<br/><img src="http://www.d99net.net/attachments/month_1111/t2011111191655.jpg" border="0" alt=""/><br/><br/>【禁止如下目录执行脚本】<br/>防止图片和上传等可写目录执行脚本<br/><img src="http://www.d99net.net/attachments/month_1111/72011111191120.jpg" border="0" alt=""/><br/><br/>【防范工具扫描网站目录和文件信息】<br/>让入侵者不容易知道你的网站结构<br/><img src="http://www.d99net.net/attachments/month_1111/q201111119312.jpg" border="0" alt=""/><br/><br/>【防范MSSQL数据库错误信息反馈暴露表或数据信息】<br/><img src="http://www.d99net.net/attachments/month_1111/w201111119210.jpg" border="0" alt=""/><br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=421" /> 
	  <id>http://www.d99net.net/default.asp?id=421</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[D盾 12月30日 手动激活通知]]></title>
	  <author>
		 <name>d99</name>
		 <uri>http://www.d99net.net/</uri>
		 <email></email>
	  </author>
	  <category term="" scheme="http://www.d99net.net/default.asp?cateID=1" label="杂谈" /> 
	  <updated>2011-12-02T15:08:30+08:00</updated>
	  <published>2011-12-02T15:08:30+08:00</published>
		  <summary type="html"><![CDATA[你可以现在&nbsp;把时间修改至&nbsp;12月30日&nbsp;再重新开打软件，软件的激活按钮变为可用，你点击一下，将重新激活软件&#44;将自动激活60天使用期&#40;以服务器时间为准)，到期后再重新激活。请激活后调回正常的时间。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.d99net.net/default.asp?id=422" /> 
	  <id>http://www.d99net.net/default.asp?id=422</id> 
  </entry>	
		
</feed>
