Pikachu靶机系列之XSS(Cross-Site Scripting)

我是啊锋,一个努力的学渣,作为一个刚进入安全大门的小白,我希望能把自己所学到的东西总结出来,分享到博客上,可以一起进步,一起交流,一起学习。

本节目录:
  • 概述
  • 反射型xss(get)
  • 反射型xss(post)
  • 存储型xss
  • Dom型xss
  • Dom型xss-s
  • Xss盲打
  • Xss之过滤
  • Xss之htmlspecialchars
  • Xss之href输出
  • Xss之js输出
  • 麦迪Tmac

前文:

Pikachu靶机系列之安装环境

Pikachu靶机系列之暴力破解(一)

Pikachu靶机系列之暴破(二):token防爆破


概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

反射型xss(get)
随便输入带<>字符然后审看元素,没想到我们的输入被原封不动地输出到了 p 标签中

Pikachu靶机系列之XSS(Cross-Site Scripting)_第1张图片
要构造完整的payload可是长度不够,只能修改一些maxlength长度了
构造的payload为

<script>alert("hack")</script>

Pikachu靶机系列之XSS(Cross-Site Scripting)_第2张图片Pikachu靶机系列之XSS(Cross-Site Scripting)_第3张图片


反射型xss(post)
看到登录框没有头绪,点击一下提示

Pikachu靶机系列之XSS(Cross-Site Scripting)_第4张图片
登录后, 构造如下paylod,发现没有过滤
Pikachu靶机系列之XSS(Cross-Site Scripting)_第5张图片


存储型xss
随便往输入框输入然后带上
 <script>alert("hack")</script>

Pikachu靶机系列之XSS(Cross-Site Scripting)_第6张图片
留言内容会被存储到数据库,然后输出到页面上
Pikachu靶机系列之XSS(Cross-Site Scripting)_第7张图片


Dom型xss
随便输入看看内容会被怎么样处理

Pikachu靶机系列之XSS(Cross-Site Scripting)_第8张图片
输入后审看元素以发现我们在输入框输入的数据会被直接拼接在
标签所以只有闭合上a标签就能随意插入代码弹框

#' οnmοuseοver="alert(/xss/)">

Pikachu靶机系列之XSS(Cross-Site Scripting)_第9张图片
即可实现弹框


Dom型xss-s
初步观察,随便输入<>sdasd点击 按钮 后会出现 what do you see? 的链接按钮,其指向是 当前目录/you_input 审查元素时发现onclick后会执行函数 domxss() ,其作用是读取input的值并将其拼接到新创建的link节点中 ,如下图可见,我刚输入的值已经拼接进去了,所以只要闭合a标签,即可弹框

Pikachu靶机系列之XSS(Cross-Site Scripting)_第10张图片
仔细一看源码,还给出了答案

Pikachu靶机系列之XSS(Cross-Site Scripting)_第11张图片

unction domxss(){
                        var str = window.location.search;
                        var txss = decodeURIComponent(str.split("text=")[1]);
                        var xss = txss.replace(/\+/g,' ');
//                        alert(xss);

                        document.getElementById("dom").innerHTML = "就让往事都随风,都随风吧";
                    }
                    //试试:'><img src="#" onmouseover="alert('xss')">
                    //试试:' οnclick="alert('xss')">,闭合掉就行

Xss之盲打

Pikachu靶机系列之XSS(Cross-Site Scripting)_第12张图片
老pyload测试,提交完后怎么搞??才发现还有个提示,点击提示

登录后台,看会发生啥?后台登录地址是/xssblind/admin_login.php

Pikachu靶机系列之XSS(Cross-Site Scripting)_第13张图片


Xss之过滤


用大小写绕过即可

Pikachu靶机系列之XSS(Cross-Site Scripting)_第14张图片


Xss之htmlspecialchars

Pikachu靶机系列之XSS(Cross-Site Scripting)_第15张图片

htmlspecialchars()函数默认是不对单引号进行转义的,要想连单引号一起转义,需要给函数传入参数ENT_QUOTES。

> ENT_COMPAT - 默认。仅编码双引号。 
> ENT_QUOTES - 编码双引号和单引号。 
> ENT_NOQUOTES - 不编码任何引号。

tmlspecialchars()函数把预定义的字符转换为 HTML实体。

预定义的字符是:

& 转为 &
" 转为 "
’ 转为 '
< 转为 <
> 转为 >

输入payload,6666666有味道了,那就”<>’/script(

Pikachu靶机系列之XSS(Cross-Site Scripting)_第16张图片

审查源代码发现 " ,>和<都经过了编码,剩下的字符没有,的确单引号依然可以使用,payload如下

' οnclick=alert(‘hack’) '

Xss之href输出
这题搞不懂,直接看看源码分析一下好了

Pikachu靶机系列之XSS(Cross-Site Scripting)_第17张图片
构造payload如下

javascript:alert(hack)

提交后查看源码,我们的输入在 a 标签的 href属性中, 此时点击我们的标签就会出现弹窗


Xss之js
审查元素

Pikachu靶机系列之XSS(Cross-Site Scripting)_第18张图片
那么,我们只需要考虑闭合,即可构造XSS,输入
Payload:',成功弹窗。


最后无论如何不要放弃心中所爱..其实,我和这个pikachu漏洞平台的作者一样,一样喜欢篮球,最后附上一张麦迪的图吧

Pikachu靶机系列之XSS(Cross-Site Scripting)_第19张图片

你可能感兴趣的:(靶机系列)