0基础浅谈反射型xss(2)

时间:2023-03-09 15:05:28
0基础浅谈反射型xss(2)

0x1:回顾前文疑惑“先闭合,在构造”

上一篇,我们说到了xss的一个触发精髓,“先闭合,在构造”,对于前面的先闭合,我们来简单的解释一下:

  1.   首先说,为什么要闭合?

因为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">

重点看黑色的那一部分:

0基础浅谈反射型xss(2)

前面的一部分变成了这样,这就闭合了前面的标签,我们在闭合后面的标签:

<input name="p1" size="60" value="">

<script>alert(/简单的XSS/)</script>

<"" type="text">

这个时候你能理解先闭合在构造的意思了吗?

0x2:(正题)什么是反射型XSS?

反射型XSS也被称为非持久性CSS。

当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。

这个过程就像一次反射,故称为反射型XSS。

对这段话理解后,于是我们发现,完成xss攻击,需要具备两个条件:

  1. web页面注入恶意代码
  2. 恶意代码能够被浏览器成功的执行

反射型攻击,恶意代码并没有保存在目标网站,而是通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。也就是说,反射型的xss经过了后端,但没有经过数据库;

0x2:( 上手实践 ) 根据原理本地构造验证反射型xss

本地环境准备:

Web容器:phpStudy

Web容器:phpStudy下载地址:http://phpstudy.php.cn/phpstudy/PhpStudy20180211.zip

操作系统:Windows

编辑器:任意使用

开始搭建:

下载好phpStudy后安装到你想要的位置(看你想要安装到那的位置,但路径中不能有中文)

在这里我放到的是D盘

0基础浅谈反射型xss(2)

因为安装后会自动运行phpStudy并自动初始化所以,初始化后不要将phpStudy随意移动位置,如要改动位置,记得删除配置文件!

然后启动

0基础浅谈反射型xss(2)

接着

0基础浅谈反射型xss(2)

点击其他选项菜单,在选择网站根目

0基础浅谈反射型xss(2)

新建文件:xss.php

(可以先新建个文本文档在用命令行将扩展名改为.php,我就是这么做的)

0基础浅谈反射型xss(2)

在本文件夹里按住“shift”后鼠标右键选择“在此处打开命令窗口”

0基础浅谈反射型xss(2)

输入命令:ren *.txt xss.php 后回车

0基础浅谈反射型xss(2)

我们看到文件名已经变了

0基础浅谈反射型xss(2)

然后用编辑器(这里我用的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

0基础浅谈反射型xss(2)

会在浏览器打开本地站点页面

0基础浅谈反射型xss(2)

这时候,我们访问xss.php

0基础浅谈反射型xss(2)

看到这熟悉的编辑框了没?

这时候输入前面学到的xss,看看效果?

0基础浅谈反射型xss(2)