仓酷云

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

[学习教程] ASP网站制作之低级教程之SQL Injection(SQL注进打击...

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

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

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

x
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。打击|教程由于今朝SQL注进长短常抢手并且手艺门坎较低的打击手腕,而且十分有用,轻则能够拿到网站的一些帐号,好比拿到某个影戏网站的黄金会员的帐号;重则使用其网站楼多进侵全部服务器等等。

这里盘算作为一个专题解说SQL及其注进。个中关于SQL不太分明的中央但愿人人本人查材料。这个帖子将临时更新。。。

一,SQL纵览

SQL(StructuredQueryLanguage)言语是一种布局化查询言语。SQL言语中完成中心功效的共有9个关头词:SELECT(数据查询)、CREAT、DROP、ALTER(数据界说)、INSERT、UPDATA、DELETE(数据利用)、GRANT、REVOKE(数据把持)。

1,数据界说部分
(1)创立基础表
creattableEmployee(
Enochar(6)notnullunique,
Enamechar(20)unique
Esexchar(2)
Eageint
Edeptchar(10)
Espechar(20)
)
该语句创立了一个名为Employee的数据表,共有六列,分离为字符型(长度为6,非空,独一)的雇员号Eno,字符型(长度为20,独一)的雇员号姓名Ename,字符型(长度为2)的雇员性别,整型的雇员岁数,字符型(长度为10)的雇员部门,字符型(长度为20)的雇员专长.

(2)删除基础表
DROPTABLEEmployee

(3)变动基础表
ALTERTABLEEmployeeADDEsalaryCHAR(5)
在雇员表中到场一列,字符型(长度为5)的雇员薪水.
ALTERTABLEWmployeeDROPUNIQUE(Ename);
往失落雇员表中雇员姓名的独一属性.
ALTERTABLEEmployeeMODIFYEsexCHAR(1);
把雇员表中的性别列改成一名字符型.

2,数据查询部分

这是SQL语句中最天真,功效最强的部分.
(1)基础查询语句
SELECTEno,Ename,EsexFROMEmployee
查询Employee表中的Eno,Ename,Esex三列
SELECT*FROMEmployee
查询Employee表中的一切列.
SELECTDISTINCTEnoFROMEmployee;
查询Employee表中的Eno列,并往除反复行.

(2)前提(WHERE)查询语句
插叙前提的毗连词以下:NOT,=,>,<,>=,<=,!=,,!>,!<,BETWEENAND,NOTBETWEENAND(断定局限),LIKE,NOTLIKE(字符婚配),ISNULL,ISNOTNULL(空值),AND,OR(多前提毗连).

对照
SELECTEnoFROMEmployeeWHEREEage<=25
列出表中岁数小于25的雇员号
断定局限
SELECTEno,EnameFROMEmployee
WHEREEage[NOT]BETWEEN20AND30
列出表中岁数(不)在20到30的雇员号和姓名
断定汇合
SELECTEno,EnameFROMEmployee
WHEREEdept[NOT]IN(‘SD,’HD’)
列出表中(不)是软硬件开辟部的雇员号和姓名
字符婚配
LIKE的用法以下
[NOT]LIKE‘<婚配形式>’[ESCAPE‘<换码符>’]
通配标记有%和_两种。
%:婚配恣意长度的字符串(长度能够为0)。A%b可与ab,adfb等婚配。
_:婚配单个恣意字符。a_b可与a#b,a@b等婚配。
假如有ESCAPE,则跟在换码标记后的%大概_不再是通配标记,只是一般的%或_。
比方:
SELECT*FROMEmployeeWHEREEnameLIKE‘刘%’
查找表中姓刘雇员的信息
SELECT*FROMEmployeeWhereEnameLIKE‘刘__’
查找表中姓名为刘某(两个字)的雇员的信息。
SELECT*FROMEmployeeWHEREEspeLIKE‘DB\%t_‘ESCAPE’’
查找表中专长项为DB_入手下手,倒数第二个字符为t的雇员的信息。

Ⅴ空值SELECT*FROMEmployeeWHEREEEspeIS[NOT]NULL
查找表中专长项(不)为空的雇员信息。

Ⅵ多前提毗连
SELECTEnameFROMEmployeeWHEREEdept=SDANDEage<=30;
列出表中软件开辟部门30及30岁以下雇员姓名。

(3)了局排序
对查询了局举行排序用ORDERBY,ASC(默许)为升序,DESC为降序
SELECT*FROMEmployeeORDERBYEdept,EageDESC

(4)了局分组
对查询了局的分组一样平常要用到SQL的集函数,因而先先容集函数。
SQL言语的集函数次要有COUNT(统计总数),SUM(乞降),AVG(求均值),MAX(最年夜值),MIN(最小值)。
SELECTMAX(Eage)FROMEmployeeWHEREEdept=SD
列出软件开辟部年事最年夜雇员的姓名。
SELECTEdeptFROMEmployeeGROUPBYEdeptHAVINGCount(*)>10
统计各部门的雇员数,只显现雇员数年夜于10的部门。
SELECTEdept,COUNT(Eno)FROMEmployeeGROUPBYEdept
统计各部门雇员数,按部门分组列出各部门的雇员数。

(5)毗连查询
毗连查询是查询触及多个数据表,FROM后毗连多个表的情形。
假设我们要统计各个项目列入人的雇员号和姓名,触及的表Eproject布局以下:
Eproject(EnoCHAR(6),PnoCHAR(6),TimeBgnTIME,
TimeEndTIME,RemarkCHAR(50))
响应的查询语句为:
SELECTEproject.Pno,Employee.Eno,Ename
FROMEmployee,Eproject
WHEREEmployee.Eno=Eproject.Eno
ORDERBYEproject.Pno;
列出列入各项目标雇员号和姓名,并依照项目号升序分列。

(6)汇合查询
汇合查询指的是多个SELECT查询了局间举行的汇合操纵。次要有UNION(并操纵),INTERSECT(交操纵),MINUS(差操纵),个中尺度SQL中没有供应交操纵和差操纵,但他们可使用团结查询完成。
假设我们要查询硬件开辟部岁数不年夜于25岁的雇员,能够分离查询完成以下:
SELECT*FROMEmployeeWHEREEdept=HDUNIONSELECT*FROMEmployeeWHEREEage<=25

3,数据更新部分
SQL中的数据更新语句有INSERT,UPDATE和DELETE三种,用法以下:

(1)拔出数据
INSERTINTOEmployee
valueS(13253,王二,男,23,SD,DB_Project)
向雇员表中拔出一条完全的数据
INSERTINTOEmployee(Eno,Ename)
valueS(13253,王二);
向表中拔出一条数据,只包括雇员号和姓名,其他列为空值。
注重:以下情况,属性为非空的列必定不克不及为空值。

(2)修正数据
UPDATEEmployeeSETEage=24WHEREEno=13253
将表中13253号雇员岁数改成24岁

(3)删除数据
DELETEFROMEmployeeWHEREEno=13253

4,数据把持部分

(1)用户受权
SQL用户受权利用GRANT关头词,它的用法以下:
GRANTSELECTONTABLEEmployeeTOusr1;
同意用户usr1查询表Employee
GRANTALLPRIVILEGESONTABLEEmployeeTOusr2;
同意用户usr2对表Employee的任何操纵

(2)发出权限
SQL中发出用户权限利用REVOKE关头词
REVOKEUPDATE(Eno)ONTABLEEmployeeFROMusr3;]
发出usr3更新表Employee中Eno列的权力
REVOKEONTABLEEmployeeFROMPUBLIC
不同意一切用户在表Employee中增加数据。
</p>因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。
简单生活 该用户已被删除
沙发
发表于 2015-1-20 08:11:20 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
只想知道 该用户已被删除
板凳
发表于 2015-1-21 09:20:05 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
飘飘悠悠 该用户已被删除
地板
发表于 2015-1-30 12:30:42 来自手机 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
5#
发表于 2015-1-31 20:55:54 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
分手快乐 该用户已被删除
6#
发表于 2015-2-6 22:32:45 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
莫相离 该用户已被删除
7#
发表于 2015-2-18 22:59:50 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
透明 该用户已被删除
8#
发表于 2015-3-6 11:21:48 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
小女巫 该用户已被删除
9#
发表于 2015-3-13 00:09:45 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-20 06:53:57 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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