web安全----XSS漏洞之基本原理

0x01 概述

XSS为跨站脚本攻击,XSS攻击针对的是用户层面的攻击!类型有反射型XSS、存储型XSS、DOM型XSS,这里的DOM可以理解为页面,或者是所有的标签、内容之和

0x02 反射型XSS

反射型XSS攻击流程为:
在这里插入图片描述
即:
发送带有XSS恶意链接----》用户点击,访问目标服务器-----》目标服务器将XSS同正常页面返回给用户-----》用户浏览器解析恶意XSS,向恶意服务器请求-----》恶意服务器获取用户信息。
所以反射型XSS又称为非持久型XSS,经过后端,不经过数据库,需要诱导目标去访问某个链接,一般用来钓鱼,盗取cookie。
程序:

1.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>反射型XSS</title>
</head>
<body><form action="action.php" method="post"><input type="text" name="name" /><input type="submit" value="提交"></form>
</body>
</html>

action.php

<?php$name = $_POST["name"];echo $name;

获取name的值,将name输出来,输入<script>alert(1)</script>,数据提交之后会给后台处理,弹出1
在这里插入图片描述
把1.html想成恶意链接,我们访问就是点击恶意链接,输入的<script>alert(1)</script>变成其他获取用户信息的代码,用户请求目标服务器上的action.php,action.php把恶意代码XSS返回给用户,用户浏览器解析,恶意服务器就会获得我们的信息了。
所以数据的流向是:
前端(用户访问的页面1.html)-----》后端(action.php处输出1.html内容)-----》前端(用户看到action.php形成的页面)

0x03 存储型XSS

存储型XSS又称为持久性XSS,攻击脚本会永久存放在目标服务器中,也就是说,每次我们访问页面,页面会把我们构造的XSS取出来,然后执行,具体例子可以看一下DVWA的,这个好理解一些
在这里插入图片描述

0x04 DOM型XSS

我觉得反射型和DOM型是最难理解,很难区分开,DOM型能够使程序和脚本动态访问和更新文档的内容、结构和样式,从客户端获取DOM中的数据并在本地执行,也具有一次性
程序:
2.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>DOMXSS</title>
</head>
<body><form action="action2.php" method="post"><input type="text" name="name"><input type="submit" value="提交"></form>
</body>
</html>

action2.php

<?php$name = $_POST['name'];?>
<input id="text" type="text" value="<?php echo $name?>"/>
<div id="print"></div>
<script>var text = document.getElementById("text");var print = document.getElementById("print");print.innerHTML = text.value
</script>

输入<script>alert(1)</script>,也会弹出1,可以看到修改了div的内容,也就是修改DOM,数据流向:前端—》前端,很多人看到这里就很想问我们输入数据不是经过action.php吗,为什么说数据流向没有经过action.php,也就是后端,这个只是为了方便处理,我们可以把

<div id="print"></div>
<script>var text = document.getElementById("text");var print = document.getElementById("print");print.innerHTML = text.value
</script>

放在1.html里,然后给<input type="text" name="name">一个ID,点击之后能修改div的内容。

0x05 总结

我对反射型XSS和DOM型XSS的理解是:反射型XSS是后端处理,不修改原来的DOM基础上,将XSS返回给用户,DOM型XSS是通过修改DOM,让DOM里有XSS,可以不经过后端。

准备把XSS总结一下,这只是基本原理,后面会写标签,过WAF,怎么测试,工具检测,利用方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象(匿名内部类与有名字内部类的比较)

A:匿名内部类 就是内部类的简化写法B:前提 这里的类可以是具体类也可以是抽象类C&#xff1a;格式 new 类名或者接口(){ //表示继承这个类或实现这个接口重写方法}D&#xff1a;本质是什么呢&#xff1f; 是一个继承了该类或者实现了该接口的子类匿名对象E&#xff1a;案…

如何在Python中针对一个值检查多个变量?

Given multiple variables and they are assigned some values, we have to test a value with these variables. 给定多个变量并为其分配了一些值&#xff0c;我们必须使用这些变量测试一个值。 Let, there are three variables a, b and c and we have to check whether one…

品析《桃花庵歌》

桃花庵歌 【明】唐寅&#xff08;YIN) 桃花坞里桃花庵&#xff0c;桃花庵下桃花仙&#xff1b; 桃花仙人种桃树&#xff0c;又摘桃花卖酒钱。 酒醒只在花前坐&#xff0c;酒醉还来花下眠&#xff1b; 半醒半醉日复日&#xff0c;花落花开年复年。 但愿老死花酒间&#xf…

面向对象(匿名内部类重写多个方法调用)

①匿名内部类只针对重写一个方法的时候使用; ②若有多个方法&#xff0c;通过匿名内部类进行调用的时候&#xff0c;需要一个一个进行调用,比较麻烦&#xff0c;所以不建议使用。 ③匿名内部类是无法向下转型的&#xff0c;向下转型需要子类的类名&#xff0c;这里面没有子类…

c++ 取两个链表的交集_使用C ++程序查找两个链表的交集

c 取两个链表的交集Problem statement: Write a C program to find the intersection of two single linked lists. 问题陈述&#xff1a;编写一个C 程序来查找两个单个链表的交集。 Example: 例&#xff1a; Let the first linked list be:6->5->2->9->NULLLet …

只在IE中显示

只在IE中显示div{display:none;display:block;_display:block}转载于:https://www.cnblogs.com/lishenglyx/archive/2008/08/21/1273089.html

web安全---XSS漏洞之标签使用2

所有标签已经测试完并可以使用&#xff0c;测试环境&#xff1a;DVWA的反射型XSS&#xff0c;等级low 0x01 <script>标签 <script>alert(2)</script> <script>alert(2)</script//0x02 <img>标签 <img src"x" onerroralert(1)…

Java——多线程(铁路售票系统案例)

问题&#xff1a;铁路售票&#xff0c;一共100张&#xff0c;通过四个窗口卖完。 要求&#xff1a;分别用 继承Thread类 和 实现Runnable接口 去实现 ①用继承Thread类去实现 package com.yy.syn;public class Demo3_Ticket { /*** 铁路售票&#xff0c;一共100张&#xff…

Java LocalDateTime类| 带示例的getDayOfWeek()方法

LocalDateTime类getDayOfWeek()方法 (LocalDateTime Class getDayOfWeek() method) getDayOfWeek() method is available in java.time package. getDayOfWeek()方法在java.time包中可用。 getDayOfWeek() method is used to get the field value day-of-week that is an enum …

软件测试方法大汇总

软件测试方法大汇总 软件测试方法种类繁多&#xff0c;记忆起来混乱&#xff0c; 如果把软件测试方法进行分类, 就会清晰很多。 我参考一些书籍和网上的资料&#xff0c; 把常用的软件测试方法列出来&#xff0c; 让大家对软件测试行业有个总体的看法。 从测试设计方法分类 测试…

web安全----xss工具使用3

XSSer 0x01 安装 环境&#xff1a;kali、python3&#xff08;必须是python3&#xff0c;kali默认为python2&#xff09; 安装步骤&#xff1a; git clone https://github.com/epsylon/xsser.git cd xsser sudo python3 setup.py install 使用命令&#xff1a; xsser -h查看…

Java——多线程(死锁)

死锁是指&#xff1a;两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的进程称为死锁进…

c# 前导0_C#| 用前导零填充整数

c# 前导0To pad an integer number with leading zero, we can use String.Format() method which is library method of String class in C#. 要用前导零填充整数&#xff0c;我们可以使用String.Format()方法&#xff0c;该方法是C&#xff03;中String类的库方法。 using S…

走到尽头的技术-MVC

MVC技术是一种WebApplication设计技术&#xff0c;相比于传统Web应用程序&#xff0c;MVC可以使程序结构更加清晰&#xff0c;他采用 Model&#xff0c;View&#xff0c;Controller 来管理和架构我们的Web资源&#xff0c;将不同的请求&#xff08;request&#xff09;导向不同…

Search Engine -垂直搜索小汇总

FilesTube: 共享文件搜索引擎,文件来自:Rapidshare, MegaUpload, Megashares, YouSendIt, SaveFile, FileFront和Badongo等很多文件储存网站,支持的文件格式包括:AVI, MP3, MPEG, MPG, RAR, WMA, WMV, EXE, ZIP等,主要为媒体格式,不支持中文 Picsearch:专业图片搜索引擎,中文界…

Java——多线程(线程安全问题)

同步为安全&#xff0c;不同步为不安全&#xff1b;也就是有synchronized这个标识符&#xff0c;就为线程安全&#xff0c;反之&#xff0c;为线程不安全。 ①Vector是线程安全的 ②StringBuffer是线程安全的 ③Hashtable是线程安全的 Collections.synchronized(xxx)&#…

web安全---XSS利用平台BLUE-LOTUS安装与使用

0x01 安装 环境&#xff1a;windows、phpstudy 下载地址&#xff1a;https://gitee.com/gid1314/BlueLotus_XSSReceiver-master 下载后将文件解压&#xff0c;重命名为blue&#xff0c;放在www目录下 访问&#xff1a;http://IP/blue 点击安装 这里只需要修改后台登陆密码和…

C#Convert.ToInt32(bool)方法-将bool值转换为int

C&#xff03;Convert.ToInt32(bool)方法 (C# Convert.ToInt32(bool) Method) Convert.ToInt32(bool) Method is used to convert a specific Boolean (bool) value to its equivalent integer (int 32 signed number). Convert.ToInt32(bool)方法用于将特定的布尔值(布尔值)转…

配置Microsoft Visual SourceSafe 2005的Internet访问

配置Microsoft Visual SourceSafe 2005的Internet访问 VSS2005发布以后&#xff0c;早就听说可以支持Internet访问&#xff0c;这是一个很有意思的特性。前两天有空&#xff0c;就安装配置了一下&#xff0c;成功访问。现在安装过程发布出来&#xff0c;大家共享。 步骤0&…

使用delphi 开发多层应用(十)安全访问服务器

前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制&#xff0c;这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问 服务器。第二是数据在网络传输过程中都是明码的&#xff0c;没有加密&#xff0c;使用网络侦听器就可以检测到传输的内容。这是一个…