pikachu靶场之Cross-Site Scripting(XSS)

反射型XSS(get)

废话不多讲,有关xss的原理请自行百度,首先看到打开之后页面是如下的,
pikachu靶场之Cross-Site Scripting(XSS)_第1张图片
随便输入点什么,然后F12审查元素看下,在查找里输入随便输入的值查看输入值是否注入到页面。发现我们所输入的成功写入到页面内。
pikachu靶场之Cross-Site Scripting(XSS)_第2张图片
然后尝试构造一下payload输入,发现完整的payload输入不进去,然后我们看到限制我们输入的长度为20,我们改成100吧。
pikachu靶场之Cross-Site Scripting(XSS)_第3张图片
输入payload测试下。成功弹窗

<script>alert(/xss/)</script>

pikachu靶场之Cross-Site Scripting(XSS)_第4张图片

反射型XSS(post)

点开之后发现页面是这样子的,先登陆,点了一下提示知道了账号密码。然后我们登陆下。
在这里插入图片描述post方式提交的内容并不会显示在url之内。问了一下大佬,说xss目的性比较强,达到你需要弹窗的目的就好了,反正我是觉得跟get没有什么太大的区别。跟上一关一样,输入然后看注入到页面。输入payload。

<script>alert(/xss/)</script>

pikachu靶场之Cross-Site Scripting(XSS)_第5张图片
成功弹窗。

pikachu靶场之Cross-Site Scripting(XSS)_第6张图片

存储型XSS

存储型XSS和反射型XSS的原理一样,不同的是存储型XSS一般存在与数据库存在交互的地方,代码注入到后台存储起来,每次刷新都会执行,这样构成了更加持久的危害,例如留言板之类。
打开页面之后先随便输入了一点内容然后F12审查元素看下输入的内容有没有经过过滤,发现我们输入的内容被直接写入到标签中,然后我们可以构造payload。

<script>alert(/xss/)</script>

pikachu靶场之Cross-Site Scripting(XSS)_第7张图片

发现成功弹框,而且我们每一次刷新之后都会再次弹框,并且在留言板内发现一条看不见东西的内容。
pikachu靶场之Cross-Site Scripting(XSS)_第8张图片
pikachu靶场之Cross-Site Scripting(XSS)_第9张图片

DOM型XSS

还是老样子打开之后先随便输入点字符看看有没有经过过滤,查看源码发现并没有经过过滤,然后看到一段JS代码,发现我们可以通过拼接闭合的方式去构造payload。
pikachu靶场之Cross-Site Scripting(XSS)_第10张图片在这里插入图片描述
构造的payload为,意思是单击,弹出xss,单击之后弹框。

' οnclick="alert('xss')">

pikachu靶场之Cross-Site Scripting(XSS)_第11张图片还有一种payload是 '> 在输入之后可以看到下面出现了一个图片的符号,然后将鼠标移动过去之后就会弹框。
pikachu靶场之Cross-Site Scripting(XSS)_第12张图片

DOM型XSS-X

随便输入了点字符审查元素发现并没有被写入到页面内,然后查看源码:也是一段JS代码,将+替换为空格,利用 window.location.search获取内容然后赋值给str,还是看底下我们构造拼接就可以。
pikachu靶场之Cross-Site Scripting(XSS)_第13张图片
payload跟上面的一样。' onclick="alert('xss')"> 单击之后弹框。
pikachu靶场之Cross-Site Scripting(XSS)_第14张图片

XSS之盲打

他更相当于是给你的一个模拟的场景,让你先以攻击者的身份构造payload攻击,然后以管理员的视角去操作。打开之后界面是这样。我们直接输入payload然后提交尝试。
pikachu靶场之Cross-Site Scripting(XSS)_第15张图片
以管理员身份进入后台查看。像下图。管理员地址账号密码在提示里面有,发现xss已经成功弹框。
pikachu靶场之Cross-Site Scripting(XSS)_第16张图片

XSS之过滤

真实场景下,或多或少都有一定的防护机制,但是过滤不严谨的话还是有很多的绕过方式。

  • 改变大小写。例如
  • 关闭标签。例如“>
  • 对字符串进行编码。
  • 双写标签
  • 前端绕过
  • 注释等等
    我们输入payload之后发现他过滤了script标签,
    pikachu靶场之Cross-Site Scripting(XSS)_第17张图片
    尝试更换大小写进行绕过 成功绕过
    pikachu靶场之Cross-Site Scripting(XSS)_第18张图片
    也可以用别的方法试一试。例如">

XSS之htmlspecialchars

有关于htmlspecialchars函数,请自行移步百度php手册。
pikachu靶场之Cross-Site Scripting(XSS)_第19张图片

我这里不知道为什么没有进行转义
pikachu靶场之Cross-Site Scripting(XSS)_第20张图片然后单引号并没有被转换,所以构造payload为:

 onclick='alert(/xss/)

成功弹框pikachu靶场之Cross-Site Scripting(XSS)_第21张图片

XSS之href输出

看提示然后查看源码发现我们输入的内容用 htmlspecialchars() 进行处理,转义单引号、双引号和左右尖括号,用javascript协议来执行JS,构造payload,单击成功弹框。

javascript:alert(/xss/)

pikachu靶场之Cross-Site Scripting(XSS)_第22张图片pikachu靶场之Cross-Site Scripting(XSS)_第23张图片

XSS之js输出

直接查看源码吧。
pikachu靶场之Cross-Site Scripting(XSS)_第24张图片
构造一个闭合,先用一个单引号和闭合掉页面中的

你可能感兴趣的:(靶场的安装以及利用,xss,信息安全)