web安全入门功法通关秘籍第五天打卡

JavaScript基本语法

JavaScript 是世界上最流行的编程语言。这门语言可用于 HTML 和 web,如需在 HTML 页面
中插入 JavaScript,使用 之间的
JavaScript。脚本可被放置在 HTML 页面的 和 部分中,也可以把脚本保存到外
部文件中

数据类型:
Boolean(布尔)
Number(数字)
String(字符串)
Undefined(未定义)
Null(空对象)
Object(对象类型)

分号用于分隔 JavaScript 语句。
通常我们在每条可执行的语句结尾添加分号。
使用分号的另一用处是在一行中编写多条语句。 (也可能看到不带有分号的案例。在 JavaScript中,用分号来结束语句是可选的。)

JavaScript 语句通过代码块的形式进行组合,块由左花括号开始,由右花括号结束,块的作用是使
语句序列一起执行。JavaScript函数是将语句组合在块中的典型例子。

JavaScript 对大小写是敏感的,当编写JavaScript 语句时,请留意是否关闭大小写切换键。函数 getElementById 与
getElementbyID 是不同的,同样,变量 myVariable 与 MyVariable 也是不同的。

JavaScript 会忽略多余的空格。可以向脚本添加空格,来提高其可读性。

在文本字符串中使用反斜杠对代码行进行换行。

注释:
单行注释以 // 开头,多行注释以 /* 开始,以 */ 结尾。

变量:
我们使用 var 关键词来声明变量,
如需像变量赋值,使用等号,向变量分配文本值时,应该用双引号或单引号包围这个值,
向变量赋的值是数值时,不要使用引号。一条语句可以声明多个变量横跨多行,使用逗号
分隔变量。变量大小写敏感

JS函数:
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
在调用函数时,可以向其传递值,这些值被称为参数。这些参数可以在函数中使用。可以发送任意
多的参数,由逗号分隔,当声明函数时,需要把参数作为变量来声明,变量和参数必须以一致的顺序
出现,第一个变量就是第一个被传递的参数的给定的值,以此类推。
如果希望函数将值返回调用它的地方,通过使用 return 语句就可以实现,在使用 return 语句时,函
数会停止执行,并返回指定的值。

JS局部变量与全局变量:
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的
作用域是局部的)。在不同的函数中可以使用名称相同的局部变量,因为只有声明过该变量的函数才
能识别出该变量,函数执行完后局部变量中的数据就会消失
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它,在函数内定义,但不加var
声明的也是全局变量。
局部变量优先级高于同名全局变量。

运算符:web安全入门功法通关秘籍第五天打卡
web安全入门功法通关秘籍第五天打卡
JS的条件语句:
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
if…else if…else 语句 - 使用该语句来选择多个代码块之一来执行
switch 语句 - 使用该语句来选择多个代码块之一来执行

JS循环语句:
for - 循环代码块一定的次数
for/in - 循环遍历对象的属性
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块

break和continue语句:
break 语句可用于跳出循环,break 语句跳出循环后,会继续执行该循环之后的代码(如果
有的话)
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。
continue 语句(带有或不带标签引用)只能用在循环中。
break 语句(不带标签引用),只能用在循环或 switch 中。
break 语句可通过标签引用,用于跳出任何 JavaScript 代码块:

JavaScript 通常用于操作 HTML 元素。如需从 JavaScript 访问某个 HTML 元素,使用 “id” 属性来标识 HTML 元素,用document.getElementById(id) 方法。

要 将 id=“ab” 的 HTML 元 素 内 容 替 换(innerHTML)为"Hellow World",使用document.getElementById(“ab”).innerHTML="Hellow World"改变其内容。

JavaScript 如需将元素写入HTML文档输出中,用document.write()。

如 需 改 变 HTML 元 素 的 属 性 , 用document.getElementById(id).attribute=new value这个语法。

如需改变 HTML 元素的样式 , 使 用 语 法document.getElementById(id).style.property=new style

JS中可以创建三种消息框:警告框 alert(“文本”)、确认框confirm(“文本”)、提示框prompt(“文本”,“默认值”)

XSS漏洞

XSS攻击,通常是指恶意攻击者往Web页面里插入恶意的html代码,当用户浏览该页之时,嵌 入Web里面的html代码会被执行,从而达到恶意攻击用户的目的。

在HTML中常用到字符实体,对常用到的字符实体没有进行转译,导致完整的标签出现,在可输入的文本框等某些区域内输入特定的某些标签导致代码被恶意篡改

web安全入门功法通关秘籍第五天打卡
如图就完成了一次xss攻击

危害:
1.网络钓鱼,盗取各类用户的账号。
2.窃取用户Cookie,获取用户隐私,或者利用用户身份进一步执行操作。
3.劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志等。
4 .强制弹出广告页面,刷流量等。
5.进行恶意操作,例如任意篡改页面信息,删除文章等,传播跨站脚本蠕虫,网页挂马等
6.进行基于大量的客户端攻击,如DDOS攻击。 7.结合其它漏洞,如CSRF漏洞。 8.进一步渗透网站。

反射型XSS又被称为非存储型XSS,攻击者通常会通过URL参数传入恶意语句从而实现攻击,由于我们的payload未经过一个存储的过程直接传到了用户浏览的页面上,所以也称之为非存储型XSS。

存储型XSS, 也叫持久化XSS,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等。
要成为存储型XSS攻击点,需满足以下两点:
1.有数据提交点以及回显点
2.其中处理过程无危险字符转义处理或可绕过转义处理

攻击者在页面中插入XSS代码,服务器将恶意代码传至数据库,当受害者浏览页面时服务器将代码取出从而实现攻击。

DOM型XSS:
简单的说,通过修改页面的DOM节点形成的XSS,就是DOMbasedXSS。这里就要提及JS的极为重要的一个功能了,就是可以修改DOM节点。那么如果我们将反射型XSS的Payload用于修改DOM节点,那么可以修改页面任意元素,多用于钓鱼。
与之前相同,需要满足以下两个条件1.有数据提交点以及回显点2.其中处理过程无危险字符转义处理或可绕过转义处理
DOM式XSS触发方式与反射式XSS漏洞相同,反射式XSS的payload输出在HTML页面内,而DOM式 payload并不在html页面内输出,但都需要用户主动点击才能触发,所以需要攻击者主动将包含 payload的URL发送给用户点击,用户在打开页面后运行恶意代码,黑客完成攻击。

XSS平台:
平台搭建:https://github.com/78778443/xssplatform

命令执行漏洞:
在Web程序中,Web引用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、 shell_exec、passthru、popen、proc_popen等,当用户或者攻击者能控制这些参数时,就可以将恶意 的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞

针对于漏洞产生的条件、以及应用程序的不同,将命令执行漏洞分为此三类。
代码层过滤不严:许多的程序在开发时,开发人员对输入过滤不严格,导致漏洞的产生。
系统的漏洞造成的命令注入bash破壳漏洞
调用第三方组件存在代码执行漏洞如wordpress中用来处理图片的ImageMagick组件JAVA中的命令执行漏
(struts2/ElasticsearchChroovy等)ThinkPHP命令执行

命令执行文件读取
web安全入门功法通关秘籍第五天打卡
web安全入门功法通关秘籍第五天打卡
web安全入门功法通关秘籍第五天打卡
web安全入门功法通关秘籍第五天打卡