0基础浅谈反射型xss(2)
0x1:回顾前文疑惑“先闭合,在构造”
上一篇,我们说到了xss的一个触发精髓,“先闭合,在构造”,对于前面的先闭合,我们来简单的解释一下:
- 首先说,为什么要闭合?
因为HTML标签都是成对出现的,比如说这样:<h1>我是标题</h1>
前面的“<h1>”表示标签的开始,后面的“</h1>”表示标签的结束。
其他的标签也是一样:
<a>我是链接</a>
<font>我是文本</font>
等等其他标签·······
当然HTML中也有一些单标签,这里我们不详细看,先来分析分析前面的标签:
<input name="p1" size="60" value="" type="text">
很明显,这是一个标签的前面开始的一部分,当然,input也能当做单标签用,这里不解释。那么什么是先闭合呢?
实际上就是利用的双标签一个开始,一个结束的思想,因为在编辑框输入的值在“value”这个属性中,所以当我们构造先闭合,即就是让“value”两边的值各变成一个标签。
<input name="p1" size="60" value=" " > " type="text">
重点看黑色的那一部分:
前面的一部分变成了这样,这就闭合了前面的标签,我们在闭合后面的标签:
<input name="p1" size="60" value="">
<script>alert(/
简单的XSS/)</script>
<"" type="text">
这个时候你能理解先闭合在构造的意思了吗?
0x2:(正题)什么是反射型XSS?
反射型XSS也被称为非持久性CSS。
当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。
这个过程就像一次反射,故称为反射型XSS。
对这段话理解后,于是我们发现,完成xss攻击,需要具备两个条件:
- 向web页面注入恶意代码
- 恶意代码能够被浏览器成功的执行
反射型攻击,恶意代码并没有保存在目标网站,而是通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。也就是说,反射型的xss经过了后端,但没有经过数据库;
0x2:( 上手实践 ) 根据原理本地构造验证反射型xss
本地环境准备:
Web容器:phpStudy
Web容器:phpStudy下载地址:http://phpstudy.php.cn/phpstudy/PhpStudy20180211.zip
操作系统:Windows
编辑器:任意使用
开始搭建:
下载好phpStudy后安装到你想要的位置(看你想要安装到那的位置,但路径中不能有中文)
在这里我放到的是D盘
因为安装后会自动运行phpStudy并自动初始化所以,初始化后不要将phpStudy随意移动位置,如要改动位置,记得删除配置文件!
然后启动
接着
点击其他选项菜单,在选择网站根目
新建文件:xss.php
(可以先新建个文本文档在用命令行将扩展名改为.php,我就是这么做的)
在本文件夹里按住“shift”后鼠标右键选择“在此处打开命令窗口”
输入命令:ren *.txt xss.php 后回车
我们看到文件名已经变了
然后用编辑器(这里我用的vs编辑器 , 用习惯了编辑器无影响)打开这个文件,输入以下内容并保存:
<form action="" method="get">
<input type="text" name="xss"/>
<input type="submit" value="test"/>
</form>
<?php
$xss = @$_GET['xss'];
if($xss!==null){
echo $xss;
}
?>
现在先不解释每行代码的意思(第三节讲解),我们先完成整个本地演示,依旧是这个菜单,
选择My Home Page
会在浏览器打开本地站点页面
这时候,我们访问xss.php
看到这熟悉的编辑框了没?
这时候输入前面学到的xss,看看效果?
0基础浅谈反射型xss(2)的更多相关文章
- 0基础浅谈反射型xss (1)
0X1:在学习xss之前,先快速学习相关的HTML代码 1. <input>标签 文本域用法: <input type="text" /> Type的作 ...
- 【推荐】JAVA基础◆浅谈3DES加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- C#核心基础--浅谈类和对象的概念
浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...
- Oauth2.0安全问题浅谈
大家如果对Oauth还不是很了解可以先看下这篇文章https://www.cnblogs.com/maoxiaolv/p/5838680.html 我这篇博客主要是总结一下安全测试过程中遇到Oauth ...
- C#基础---浅谈XML读取以及简单的ORM实现
背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...
- c#核心基础 - 浅谈 c# 中的特性 Attribute)
特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签.可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它所应用的元素前面 ...
- JS基础——浅谈前端页面渲染和性能优化
加载html中的静态资源 其中,加载静态资源的过程,一般为浏览器根据DNS服务器得到域名的IP地址,然后向这个IP的机器发送http请求,服务器收到.处理并返回http请求,浏览器得到返回http请求 ...
- Zabbix4.0安装浅谈
一.此篇文章存在意义 针对超级小白,大神绕过 在zabbix官网https://www.zabbix.com/download里,需要数据库,但是并没有指导小白的我们如何安装数据库,此文章包含了Mys ...
- Java 面向对象 知识点基础浅谈
1.类和对象的关系 类是一个抽象的模板,对象是根据模板制造出来的,只有类建立之后,对象才可以在类中实例化对象.举个例子讲:我要用黄金浇筑一块砖,我会在一个模型里进行,这样才能有砖的形状,那模型即是类, ...
随机推荐
- VS2015 C#6.0 中的没有实现/支持的特性
VS2015 C#6.0 中的没有实现/支持的特性 .数组增强:赋值 维数组 Int[] numbers: numbers = {2,3,4,5}; 维数组 Int[,] numbers2; ...
- 代替Reflection(反射)的一些方法(转)
作者:JustRun 林肯: http://www.cnblogs.com/JustRun1983/p/3830764.html 代替Reflection(反射)的一些方法(转) 2014-07-08 ...
- A*—java代码
import java.util.ArrayList; // A*算法寻路 public class AStar2 { public static final int[][] maps = { {0, ...
- Spring IOC容器启动流程源码解析(四)——初始化单实例bean阶段
目录 1. 引言 2. 初始化bean的入口 3 尝试从当前容器及其父容器的缓存中获取bean 3.1 获取真正的beanName 3.2 尝试从当前容器的缓存中获取bean 3.3 从父容器中查找b ...
- LUA Metatables
__index:当我们访问一个表中的元素不存在时,则会触发去寻找__index元方法,如果不存在,则返回nil,如果存在,则返回结果. 博主注:__index有点像异常处理的意思 __newindex ...
- SqlMapConfig.xml配置文件中的mapper映射器标签
Mapper配置的几种方式: 1. <mapper resource=" "/> 使用相对于类路径的资源 如:<mapper resource="com ...
- send anywhere真的好用啊
手机和电脑互传文件,方便很多.
- 在JS中使用全局变量
在JS中使用全局变量不像C++,也不像PHP. 先摆出错的代码: var globalvar = 'a'; function test(){ alert(globalvar); } 这里弹出的是und ...
- Zookeeper 目录
Zookeeper 目录 Zookeeper 致力于提供一个高性能.高可用,且具有严格的顺序访问控制能力(主要是写操作的严格顺序性)的分布式协调服务.以下是我整理的笔记. 一.分布式理论基础 1.1 ...
- OA与ERP集成 可行?
[正文] 近些年来,当谈论到企业信息化的时候,ERP都成为一个热门话题,ERP的出现似乎给企业带来了一个翻天覆地的变化,而且也成为企业实现信息化的"新宠儿".然而OA也曾经是企业信 ...