仓酷云 发表于 2015-1-16 22:10:42

ASP网站制作之ASP毛病全打仗-进阶篇

因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。  在进门篇,我们学会了SQL注进的判别办法,但真正要拿到网站的保密内容,是远远不敷的。接上去,我们就持续进修怎样从数据库中猎取想要取得的内容,起首,我们先看看SQL注进的一样平常步骤:

  第一节、SQL注进的一样平常步骤

  起首,判别情况,寻觅注进点,判别数据库范例,这在进门篇已讲过了。

  其次,依据注进参数范例,在脑海中重构SQL语句的原貌,按参数范例次要分为上面三种:

  (A)ID=49这类注进的参数是数字型,SQL语句原貌大抵以下:
  Select*from表名where字段=49
  注进的参数为ID=49And[查询前提],便是天生语句:
  Select*from表名where字段=49And[查询前提]


  (B)Class=一连剧这类注进的参数是字符型,SQL语句原貌大抵概以下:
  Select*from表名where字段=’一连剧’
  注进的参数为Class=一连剧’and[查询前提]and‘’=’,便是天生语句:
  Select*from表名where字段=’一连剧’and[查询前提]and‘’=’’

  (C)搜刮时没过滤参数的,如keyword=关头字,SQL语句原貌大抵以下:
  Select*from表名where字段like’%关头字%’
  注进的参数为keyword=’and[查询前提]and‘%25’=’,便是天生语句:
  Select*from表名where字段like’%’and[查询前提]and‘%’=’%’

  接着,将查询前提交换成SQL语句,猜解表名,比方:

  ID=49And(SelectCount(*)fromAdmin)>=0

  假如页面就与ID=49的不异,申明附加前提建立,即表Admin存在,反之,即不存在(请切记这类办法)。云云轮回,直至猜到表名为止。

  表名猜出来后,将Count(*)交换成Count(字段名),用一样的道理猜解字段名。

  有人会说:这里有一些偶尔的成份,假如表名起得很庞大没纪律的,那基本就没得玩下往了。说得很对,这天下基本就不存在100%乐成的黑客手艺,苍蝇不叮无缝的蛋,不管多手艺多深邃的黑客,都是由于他人的程序写得不周密或利用者保深情识不敷,才有得动手。

  有点跑题了,话说返来,关于SQLServer的库,仍是有举措让程序告知我们表名及字段名的,我们在初级篇中会做先容。


  最初,在表名和列名猜解乐成后,再利用SQL语句,得出字段的值,上面先容一种最经常使用的办法-Ascii逐字解码法,固然这类办法速率很慢,但一定是可行的办法。

  我们举个例子,已知表Admin中存在username字段,起首,我们取第一笔记录,测试长度:

  http://www.19cn.com/showdetail.asp?id=49;;and(selecttop1len(username)fromAdmin)>0

  先申明道理:假如top1的username长度年夜于0,则前提建立;接着就是>1、>2、>3如许测试下往,一向到前提不建立为止,好比>7建立,>8不建立,就是len(username)=8

  固然没人会笨得从0,1,2,3一个个测试,怎样才对照快就看各自觉挥了。在失掉username的长度后,用mid(username,N,1)截取第N位字符,再asc(mid(username,N,1))失掉ASCII码,好比:

  id=49and(selecttop1asc(mid(username,1,1))fromAdmin)>0

  一样也是用慢慢减少局限的办法失掉第1位字符的ASCII码,注重的是英文和数字的ASCII码在1-128之间,能够用折半法减速猜解,假如写成程序测试,效力会有极年夜的进步。

  第二节、SQL注进经常使用函数

  有SQL言语基本的人,在SQL注进的时分乐成率比不熟习的人高良多。我们有需要进步一下本人的SQL程度,出格是一些经常使用的函数及命令。

  Access:asc(字符)SQLServer:unicode(字符)

  感化:前往某字符的ASCII码

  Access:chr(数字)SQLServer:nchar(数字)

  感化:与asc相反,依据ASCII码前往字符

  Access:mid(字符串,N,L)SQLServer:substring(字符串,N,L)

  感化:前往字符串从N个字符起长度为L的子字符串,即N到N+L之间的字符串

  Access:abc(数字)SQLServer:abc(数字)

  感化:前往数字的相对值(在猜解汉字的时分会用到)

  Access:AbetweenBAndCSQLServer:AbetweenBAndC

  感化:判别A是不是界于B与C之间

  第三节、中文处置办法

  在注进中碰着中笔墨符是常有的事,有些人一碰着中笔墨符就想打退堂鼓了。实在只需对中文的编码有所懂得,“中文害怕症”很快能够克制。

  先说一点知识:

  Access中,中文的ASCII码大概会呈现正数,掏出该正数后用abs()取相对值,汉字字符稳定。

  SQLServer中,中文的ASCII为负数,但因为是UNICODE的双位编码,不克不及用函数ascii()获得ASCII码,必需用函数unicode()前往unicode值,再用nchar函数获得对应的中笔墨符。

  懂得了下面的两点后,是否是以为中文猜解实在也跟英文差未几呢?除利用的函数要注重、猜解局限年夜一点外,办法是没甚么两样的。ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!

爱飞 发表于 2015-1-18 21:39:12

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

深爱那片海 发表于 2015-1-24 20:35:24

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

愤怒的大鸟 发表于 2015-2-2 14:44:15

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

再见西城 发表于 2015-2-7 22:59:36

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

活着的死人 发表于 2015-2-23 16:31:29

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

变相怪杰 发表于 2015-3-14 22:08:29

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

admin 发表于 2015-3-21 15:28:22

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
页: [1]
查看完整版本: ASP网站制作之ASP毛病全打仗-进阶篇