精通脚本黑客+++.docx

上传人:b****4 文档编号:6709193 上传时间:2023-05-10 格式:DOCX 页数:47 大小:80.87KB
下载 相关 举报
精通脚本黑客+++.docx_第1页
第1页 / 共47页
精通脚本黑客+++.docx_第2页
第2页 / 共47页
精通脚本黑客+++.docx_第3页
第3页 / 共47页
精通脚本黑客+++.docx_第4页
第4页 / 共47页
精通脚本黑客+++.docx_第5页
第5页 / 共47页
精通脚本黑客+++.docx_第6页
第6页 / 共47页
精通脚本黑客+++.docx_第7页
第7页 / 共47页
精通脚本黑客+++.docx_第8页
第8页 / 共47页
精通脚本黑客+++.docx_第9页
第9页 / 共47页
精通脚本黑客+++.docx_第10页
第10页 / 共47页
精通脚本黑客+++.docx_第11页
第11页 / 共47页
精通脚本黑客+++.docx_第12页
第12页 / 共47页
精通脚本黑客+++.docx_第13页
第13页 / 共47页
精通脚本黑客+++.docx_第14页
第14页 / 共47页
精通脚本黑客+++.docx_第15页
第15页 / 共47页
精通脚本黑客+++.docx_第16页
第16页 / 共47页
精通脚本黑客+++.docx_第17页
第17页 / 共47页
精通脚本黑客+++.docx_第18页
第18页 / 共47页
精通脚本黑客+++.docx_第19页
第19页 / 共47页
精通脚本黑客+++.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

精通脚本黑客+++.docx

《精通脚本黑客+++.docx》由会员分享,可在线阅读,更多相关《精通脚本黑客+++.docx(47页珍藏版)》请在冰点文库上搜索。

精通脚本黑客+++.docx

精通脚本黑客+++

精通脚本黑客

第4章Javascript和vbscript入门返回

4.1什么是Javascript语言

4.1.1Javascript简介

4.1.2Javascript和事件

4.1.2Javascript代码的编写与执行

4.2Javascript基础

4.2.1语法规则

4.2.2动态生成页面内容

4.2.3与用户交互的基本方法

4.2.4变量和函数的声明与使用

4.2.5对象

4.3什么是vbscript语言

4.3.1vbscript概述

4.4VBScript基础

4.4.1VBScript编程基础

4.4.2VBScript的控制语句

4.4.3VBScript的过程和函数

4.4.4VBScript中常用的函数和语句

4.5使用Cookies4.5.1什么是Cookie

4.5.2Cookie的组成

4.5.3使用Cookie

4.6正则表达式

4.6.1什么是正则表达式

4.6.2创建正则表达式

4.6.3正则表达式的字符串对象的常用方法

4.6.4初识通用防注入系统

4.7跨站攻击详解

4.7.1跨站漏洞的成因

4.7.2跨站漏洞攻击与防御详解

4.7.3跨站漏洞实例解析

4.7.4细谈挂马

4.8脚本病毒简介与分析

4.8.1WSH简介

4.8.2脚本病毒的特点

4.8.3脚本病毒原理分析

你从本章可以学到如下几点:

1、JavaScript基础知识

2、VBScript基础知识

3、通用防注入系统

4、挂马的原理及实例攻击

5、脚本病毒的原理及技术分析

对于客户端脚本语言,如果只学HTML的话。

那是肯定不够用,毕竟现在的网页都是动态的,没有动态效果就像一滩死水一样没有任何吸引力。

而Javascript和vbscript这两种动态客户端脚本语言担当起了把HTML静态页面转变成支持用户交互并响应相应时间的活页面的角色。

当然动态的客户端脚本语言是不只Javascript、vbscript这两种,比如还有JScript,但是这两种使用的最为广泛。

也是脚本黑客所必须掌握的脚本语言之一,千万不要因为他们是属于客户端脚本语言就小看他们,他们的功能也是非常的强大,比如google桌面搜索小工具、MSN桌面搜索Gadget都可用Javascript和vbscript完成。

同样他们在脚本黑客技术中也是运用的非常广泛,下面就开始我们新的学习之旅吧。

4.1什么是Javascript语言返回

4.1.1Javascript简介返回

Javascript是一种通用的脚本编程语言,并具有安全性能的解释性语言。

Javascript代码嵌入在HTML页面中,它把静态的页面转变成支持用户交互并响应事件的活页面,它能够运行在很多平台上,并独立于硬件。

Javascript和HTML关系密切,他们都是由浏览器来处理,HTML是通过浏览器的组网库和图形子系统来处理和展示,而Javascript程序是通过浏览器中内置Javascript解释执行的。

浏览器处理WEB页面的一般过程为:

浏览器请求一个WEB页面,WEB服务器则把整个页面的内容发送给浏览器,包括HTML和Javascript语句。

之后,浏览器加载WEB页面,加载的过程中,浏览器读取WEB页面的HTML语句,并逐行翻译,直到遇到Javascript代码中的开始标记时,Javascript解释器接管页面的处理过程并继续进行处理,到达Javascript代码中的结束标记时,Javascript解释器把将处理控制权交付出去,浏览器继续处理HTML内容。

对于初学Javascript的朋友来说,有两个常识大家必须要明白。

1、由浏览器处理的Javascript称作为客户端Javascript。

虽然Javascript主要用于客户端脚本编程,但这并不是Javascript的唯一用法,它也能够用户除WEB浏览器之外的其他环境,比如创建一种用于在服务器上编程的Javascript,则它可以看成是像ASP一样的服务端脚本语言。

但是这里我们不讨论服务器端的,而把精力放在Javascript运用最为广泛的客户端上。

2、很多初学者会以为Javascript就是JAVA,事实上,Javascript不是JAVA。

他们是由两家不同的公司开发出来的,Javascript是由Netscape公司开发,而JAVA则是SunMicrosystem公司开发的;JAVA可以说是与WEB页面无关,而Javascript程序则嵌入在WEB页面中,并且必须在浏览器中运行;JAVA程序必须要经过编译器的编译(如J2SDK)后才可以运行,而Javascript程序则由内置在浏览器中的Javascript引擎解释执行,不需要进行编译。

Javascript程序用于检测用户的活动,并对用户的操作做出相应的响应。

比如,当鼠标点击某个链接的时候,该链接就变成了另外一种颜色,这就是对用户操作作兴的相应的响应。

通过Javascript程序,可以控制WEB页面的外观,也能够检测用户数据数据的有效性,而这些操作都不需要和服务器进行交互,这样就减轻了服务器的处理数据负担。

总的来说Javascript能够完成以下的功能:

1、控制文档的外观和内容2、控制浏览器的行为

3、与用户交互使用Cookies读写客户端状态4、操作嵌入图象4.1.2Javascript和事件返回通过上一章的学习,我们知道HTML编写的WEB页面是静态。

HTML可以用于创建按纽、单选框、复选框、列表框和各种表格,但是HTML本身不能对于用户的操作做出反应。

可是Javascript是动态的,它能够和用户在客户端(即浏览器)进行交互。

例如,当用户填写一张表格,单击了按钮、图像、链接,或者在鼠标指针移过某个连接时,Javascript都能够对这些事件做出反应,并与用户进行动态交互。

比如说,把我们在浏览器上填写的数据发往服务器之前,Javascript能够检查我们输入数据的有效性,这常常用于检测用户输入的E-MAIL地址是否合法上,如图4-1所示,我E-MAIL地址处随便写个不合法的地址,单击提交后就马上弹出不合法的对话框,这就是对检测的效果。

图4-1同时这也是对我们的单击事件做出的操作和反应。

各位黑友在此之前应该对事件要有一个清晰而正确的认识:

事件是Javascript是让页面活起来的驱动力,所有的Javascript都是对某个事件做出的操作和反应。

事件和HTML是紧密连接在一起的,比如在下面的示例4-1中,我们使用

标记和桑属性创建了一个窗体。

Type属性指定了输入框的类型为按钮;value属性指定了这个按钮的值为"请单击此处",这个值也是按钮的标题;当我们在浏览器窗口中单击这个按钮时,就会触发一个叫Click的Javascript事件,Click的意思是"单击"。

使用onClick这个符号代表发生单击事件时执行的Javascript代码,我们也可以叫做事件处理程序。

这里我给onClick这个事件处理指定了一条语句,用户单击按钮后,就会执行这条语句。

在这个示例4-1中,这条语句的功能是在一个消息框中显示"你刚刚单击了按钮,触发了Click事件!

"。

示例4-1的代码如下:

图4-2显示了我们打开这个例子的HTML文档时显示的页面,4-3显示了单击按钮后显示图的消息框。

图4-2

图4-3表4-1我给出了Javascript能够处理的一些常见事件。

表格的第一列是事件处理程序属性名,这些名称都是以"on"开始;第二列是可以应用这些属性的HTML标记;第三列给出了事件的触发时机,也就是事件处理程序在什么时候才可以被运行。

事件处理程序onAbortonBluronChangeonClickonErroronFocusonLoadonMouseOutonMouseOveronSubmitonUnLoadHTML标记和窗体元素窗体元素所有元素所有元素所有元素

触发时机图像加载过程给中断了时触发窗体和窗体元素在失去键盘焦点时触发用户修改了窗体元素的值后触发用户单击了类似按钮这样的窗体元素后触发加载图像过程中发生错误时触发窗体或窗体元素得到键盘焦点时触发文档、图像或对象完成加载时触发鼠标指针离开对象时触发鼠标指针移过对象时触发用户提交窗体时触发卸载文档时触发

4.1.2Javascript代码的编写与执行返回

通过上一章的学习,相信大家对HTML的文档结构都已经比较熟悉了。

当能够开发出静态的HTML页面之后,那么在这个页面中添加Javascript语句就简单了。

客户端的Javascript程序是嵌入在HTML文档中头标记或体标记和之间。

Javascript程序都是使用标记作为程序的结束。

所有的Javascript代码都是在标记之间编写。

如果Javascript程序很长,也很复杂,或者想让某个Javascript程序重用,那么就应该把这样的程序防止外部文件中,后缀名为.js,并将这个js文件加载到WEB页面中。

Javascript代码中的注释通常有两种,一中是以两个斜杠(//)起始,这个注释支持一行注释,而如果要有一次注释多行的话,那就可以用注释符/*……..*/。

下面我给出了一个在标记中定义Javascript程序的示例4-2,让大家更加具体的明白Javascript程序的定义位置和使用方法。

这个例子的功能是在文档中输出一行文本,并与HTML文档中定义的静态文本对比。

示例4-2的代码如下:

这是用HTML本身功能显示的文字

图4-4保存代码后,把文件后缀名改成html即可。

如图4-4所示,就可以看到javascript语言编写的代码的效果了。

在示例4-2中,之间。

同时在。

下面就是示例4-3中引用外部文件的完整代码:

图4-5如图4-5所示,我们的引用的外部js文件已经在页面上显示了,js挂马就是利用的这个原理。

在js挂马中,我们只要把我们的木马地址写入js文件即可达到挂马的效果了。

隐蔽性还是不错。

小技巧:

如果要关闭javscript的支持的方法是,选择浏览器菜单栏中的"工具"——>"Internet选项",在弹出的对话框中,激活"安全"标签,选择"本地Internet",单击"自定义级别"按纽,在弹出的"安全设置"对话框中,使用"设置"栏中的活动脚本置为"禁用"状态,单击"按钮"就关闭了javascript的支持了,而要使用的话就单击"启用"即可。

如图4-6所示。

图4-6Jvascript脚本运行在HTML文档环境中,所以编写客户端的Jvascript代码时,首先要进行的工作是选择自己喜欢的编辑器来创建HTML文档。

在windows环境下我们一般使用记事本,而在linux或者unix下一般使用vi编辑器。

不过有一点大家要注意,如果我们使用记事本来创建HTML文档,那么一定不要选中"格式"菜单中的"自动换行"菜单项,因为选中了可能会引起HTML文档错误。

我们按照上面的知识写好了一个javascript文件后,只要把这个文件保存为html后缀即可。

4.2Javascript基础返回

4.2.1语法规则返回和我们人类使用的语言一样,所有的计算机编程语言也都有自己的规则。

我们在利用编程编写程序的时候必须遵守这些规则,否则程序就可以不能够运行了。

上一章我们已经对HTML语法规则有了一定的认识,接下来学习Javascript的语法规则,这些都是编写Javascript代码的基础哦。

虽然有点枯燥,大家可要提起精神来呀,千万不打瞌睡,不然就跟不上了。

1、大小写。

HTML标记不区分大小写,在前面我已经给大家讲解的很清楚,如果对HTML语法还有什么不懂的地方可以参考上一章的具体内容,这里不多讲了。

而在Javascript代码中,各种名称都是区分大小写的。

例如,Javascript使用false表示的逻辑值是"假",如果我们把它拼写成其他形式,比如False,那么就会导致程序出错或者这段代码被javascript的解释器给忽略。

一般来说,Javascript中使用的大多数名称都是采用小写形式,但也有一些名称采用大小写组合方式,比如示例4-1中的onClick。

因此,在编写代码时,要特别注意大小写的问题。

2、分号和语句结束符。

Javascript语言是一种表达式语言,它的语句由表达式构成。

程序在执行时,正常情况下,按自上而下的方式顺序执行,一次执行一条语句。

在Javascript程序中,一行可以写一条语句,也可以写多条语句。

一行中写多行语句时,语句之间用英文分号(;)分隔。

一行只写一条语句时,语句的结尾处可以写上一个分号,也可以不写分号。

不过我本人还是建议写上分号,因为这是养成一个良好的编程习惯。

从语法上说,下面的两条语句都是正确的:

varcityname="长沙"varcityname="长沙";第一条语句没有使用分号作为语句结束符,在语法上是正确,但第二种表示方法更加清晰。

下面的一行代码是错误的,原因是它在一行上书写了两条代码,并且在代码之间没有使用分号进行分隔:

varcityname="长沙"document.write("你好,"+cityname);//+表示连接符的意思,把前后两个字符连在一起,并不是数学上的加号正确的书写格式应该为:

varcityname="长沙";document.write("你好,"+cityname);3、之间。

反过来我们可以这样理解,HTML标记之间的一切内容都被浏览器认为是Javascript代码。

Javascript代码可以放置在HTML文档的任何位置。

一般来说,如果希望在显示HTML页面之前执行代码,那么将Javascript代码放在标记之间。

如果代码需要操作文档内容,比如插入一段文字,那么将Javascript代码放在和之间。

每一个HTML文档可以根据需要放置多个标记,也就是可以编写多段代码,每一段代码可长可短,没有长度限制。

标记的一般格式为:

除了上面最简单的(3)、当要执行的脚本代码存放在某个外部文件中时,使用src属性指定该文件,文件的扩展名通常为.js,这样的文件称作JavaScript脚本文件。

在文件名称中,可以包含路径或者URL。

如:

JavaScript脚本文件保存Javascript代码,其中不需要编写标记,也不需要任何HTML标记。

使用src的属性的行为与直接把代码嵌套在标记之间的行为是完全相同,这就是js挂马技术的原理,利用它,我们可以挂马。

4.2.2动态生成页面内容返回动态生成页面主要是构造出动态效果的HTML页面,要往HTML页面中输出,常用的有字符串拼接、write()及writeln()等方法。

1、字符串拼接。

字符串是任意多个字符组成的一串符号,比如,"曾云好"就是一个字符串。

Javascript规定,使用单引号或双引号把字符串文字括起来,这样来分辨出其他的Javascript语言元素。

不过有一点要注意的是引号本身不是字符串的一部分,它的功能是告诉Javascript解释器,引号的内容是一个字符串。

书写字符串时,一定要用相同的引号把字符串括起来,例如,'长沙"是一个错误的字符串的书写方法。

使用加号(+)可以把两个字符串拼接起来,组成一个字符串。

例如:

"湖南省"+'长沙市','湖南省'+'长沙市',都可以拼接出字符串“湖南省长沙市”。

2、write()和writeln()方法。

Javascript的一个重要功能就是能够动态地生成HTML页面,要把数据、文本以及HTML本身输出到浏览器中,我们就不能不提到document对象以及这个对象的write()和writeln()方法了。

document对象表示当前加载到浏览器中的HTML文档,即当前正在打开的HTML文件。

write()和writeln()方法是document对象的两个方法,它们的功能是把文本添加到浏览器中要显示文本的当前位置。

write()和writeln()方法的语法格式为:

document.write(value,…………..)document.writeln(value,……………)从上面括号里的参数可以看出,这两个方法可以同时输出多个值。

例如:

document.write("湖南省","长沙市")//在浏览器中添加输出"湖南省长沙市"writeln()方法的功能与write()方法相同,他们的唯一区别是writeln()方法在输出文字的同时,还要输出一个换行符号,不过要使writeln()方法产生换行的效果还必须加上

这个标记。

下面的示例4-4演示了writeln()和write()方法的显示效果差异。

示例4-4代码如下:

===================================

//

标记为换行的作用

==================================

在示例4-4中,写了三段代码,第一段代码用的write()方法输出字符串"湖南省长沙市芙蓉区";第二段代码用的是writeln()方法输出字符串"湖南省长沙市芙蓉区";第三段也是和第二段用的相同的方法,不过在中间还加了一对

标记。

运行的结果如图4-7所示。

图4-7从图中我们可以看到,虽然第二段代码使用的是writeln()方法,但是结果却是和使用write()方法的结果一样,而第三段代码使用的是wrteln()方法,可是在中间加了一对

标记就出现了换行的效果。

所以结论是对于一般的HTML文档来说,这两种方法产生的输出效果是一样的,但是结果位于HTML的

标记中,那么使用writeln()就会出现换行的效果,当然还可以使用

标记也发生换行。

4.2.3与用户交互的基本方法返回大多数情况,我们需要和程序进行交互,让程序告诉我们已经发生的情况,或从我们这里得到程序运行的下一步的数据,这种例子太多,比如我们登陆QQ的时候需要输入QQ号码和密码,这也是一个与程序的交互过程。

在Javascript语言中,提供的对话框功能可以帮我们实现这个功能,达到与用户交互的目的。

可以使用alert()、prompt()、confirm()这三种方法来创建对话框。

1、显示信息对话框的alert()方法与上一节讲的write()和writeln()方法不同的是,alert()方法生成的是一个独立的小窗口,称作对话框,用它来显示一条信息和一个按纽。

虽然不同的浏览器中的alert()对话框的外观不完全相同,但是功能是一样的。

alert()方法的语法格式为:

alert(expression);。

expression是一个字符串类型的参数,并在对话框中显示该参数的值。

不过需要注意的是alert()方法不处理参数字符串中包含的HTML标记,如果在字符串参数中包含HTML标记,那么alert()方法直接作为字符串而显示这些标记,但是可以在alert()方法的参数中使用转义字符,比如换行符\n等,从而控制控制文字的显示位置。

而且看过跨站方面的文章的朋友都知道跨站经常是弹出一个对话框,利用的知识就是alert()方法,通常写入的代码是。

示例4-5演示了alert()方法的使用。

代码如下:

在第二个alert()方法中使用了\n换行符,所以在弹出的对话框中就会有两行,如图4-8所示。

而对于跨站我将在后面给大家详细的讲解。

图4-82、显示确认选择对话框的confirm()方法确认选择对话框用于确定用户对某个YES/NO风格问题的回答。

这种风格的对话框中显示一个问号和两个按钮:

“确定”和“取消”。

当我们点击“确定”按钮时,confirm()方法返回true,否则就返回false。

confirm()方法只需要一个参数,用于向用户提出YES/NO风格问题的回答。

Confirm()方法的语法格式为:

confirm(string)。

其中string是要在该对话框中显示的提示信息。

示例4-6演示了confirm()方法的使用,代码如下:

把代码保存之后打开,首先输出字符串"湖南省长沙市"并弹出一个选择确认对话框,如图4-9所示。

如果我们选择确定,那么confirm()方法返回true,和上面我们if…..else语句中的判断条件相符合,那么就会继续输出字符串"芙蓉区远大路",并弹出信息对话框,提示"已经显示我的详细地址了",如图4-10;如果选择的是取消,那么就弹出信息对话框,提示"不显示我的详细地址",如图4-11。

图4-9

图4-10

图4-113、显示提示对话框的prompt()方法使用prompt()方法显示提示对话框,在这个对话框中,可以显示一条由参数指定的消息,并等待用户在文本框中输入一段文字,同时这个对话框还显示了两个按钮:

“确定”和“取消”。

用户点击“确定”按钮后,返回用户在对话框的文本框中输入的文字,否则返回null,即返回空。

prompt()方法使用两个参数:

第一个参数是一个字符串,指定在对话框中显示的消息;第二个参数也是一个字符串,指定在文本框中显示的初始值,如果省略了这个参数那么就会在文本框中显示字符串"undefined",如图4-12所示。

图4-12如果该参数的值为空字符串,那么在文本输入框中什么也不显示。

prompt()方法的两种可用语法格式为:

prompt(message);prompt(message,defaultText);其中,message是指定对话框中显示的消息,defaultText指定文本框中显示的初始内容。

示例4-7演示了prompt()方法,代码如下:

保存后运行的结果,如图4-13所示。

图4-13

4.2.4变量和函数的声明与使用返回1、变量在我们的现实生活中,每个人都有名字,通常可能还有几个名字,比如一个姓名和一个小名。

而在我们的计算机语言里也同样存在名字,我们叫它变量。

而这个变量代表的是系统里一个存储区域。

所有的计算机编程语言都提供了变量这个语言元素。

变量用于存储数据,比如数字或字符串等等。

变量一般有名称、类型及变量的值这三方面的特性。

比如:

Num=8;City="长沙";不是任何符号都能够做变量的名称。

根据

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2