pikachu靶场XSS篇

发布时间 2023-10-29 13:33:26作者: Menkio

一、XSS简介
XSS全称:跨站脚本(Cross Site Scripting) ,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,从而达到攻击者的目的。

二、XSS原理
服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的。

 

三、xss靶场练习

反射型xss-get

通过F12读取网页代码,修改输入框的大小

 

 

填入<script>alert('1');</script>弹窗

反射型xss-post

登录账号密码后填入<script>alert('1');</script>

存储型xss

在留言框中输入构造语句,同上

DOM型

利用了DOM将字符串进行了拼接并把值给a标签的href,然后输出一个what do you see?

所以我们可以利用已知条件构建payload效果为弹窗,弹窗内容为1

<a href='#' onclick="alert(1)">'>what do you see?</a> 

 XSS盲打

输入构造语句后发现完全不显示在页面上

查看源代码发现是post请求,再根据提示登录后台

发现弹窗

XSS过滤

通过多次尝试发现过滤的语句可能为<.*script

于是使用script外的构造语句

<a herf="#" onclick="alert(document.cookie)">

 xss之htmlspecialchars

使用常用的的payload没弹窗

 

鼠标右键–查看网页源代码,发现不管是<a>标签内还是href属性内,左右尖括号被编码了,因此这关想闭合标签是不行了。仔细一看,又发现单引号居然没有被html编码,可以可以,利用一下<a>

根据信息构造新的payload

#' onclick='alert(1)'

xss之href输出

href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了<a>标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

从上述描述可见,这边可以利用JavaScript协议。输入
payload:

javascript:alert(document.cookie)

xss之js输出

首先要用’;闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的’;

输入payload:';alert(1);//