xss-labs(1-5)

img

level-1 简单触发

构造<script>alert(1)</script>,直接弹窗说成功了,这是为什么呢?

image-20210727192600589

看看源代码,对于提交的name没有任何限制,直接输出到页面上,所以导致弹窗.

image-20210727192802854

level-2 ">闭合input标签

在搜索框中输入<script>alert(1)</script>看看效果

image-20210727193001518

没有弹窗?

image-20210727193043582

前端代码也没有发现特别的东西

image-20210727193449010

进行代码审计看看,使用了htmlspecialchars($str)函数

image-20210727193605155

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

预定义的字符是:

  • & (和号)成为 &amp
  • " (双引号)成为 "&quot
  • ' (单引号)成为 &#039
  • < (小于)成为 &lt
  • > (大于)成为 &gt

突然间无从下手了

又回去看了看前端源码,发现<input可以闭合

image-20210727194034370

构造"><script>alert(1)</script>

image-20210727194428224

level-3 '绕过html编码并闭合value

根据提示,突破点应该在搜索框上

image-20210727194559290

查看前端源码,<input也可以闭合

image-20210727194749965

构造"><script>alert(1)</script>,很遗憾失败了

image-20210727194903974

看看源码

输入框中的字符也被转义成实体了,闭合方法失效了

image-20210727195144568

htmlspecialchars($str)函数默认是只编码双引号的!默认只编码双引号!默认只编码双引号……重要的事情说三遍!!!

可用的引号类型:

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

所以单引号可以绕过htmlspecialchars()函数

使用事件触发器尝试绕过一下,比如onchange, onclick, oninput等等

以下均可绕过

'onclick='alert(1) //点击以后触发时间
'onclick=alert(1)空格'

'oninput='alert(1) //    当要在input中输入内容时触发事件
'oninput=alert(1)空格'    同上

'onchange='alert(1) //  发生改变的时候触发该事件
'onchange=alert(1)空格'  同上

'onmouseover='alert(1)//移动到区域时触发该事件
'onmouseover=alert(1)空格'

绕过成功

image-20210728080134340

level-4 "闭合value

闭合标签没用了,试试事件触发'onclick='alert(1),还是不行

image-20210728080430145

看看源码

image-20210728080718652

他把尖括号给替换成空格,在value中用的双引号,但是没有用htmlspecialchars($str)函数从而导致输入"不会被实体转义,因此可以用"闭合value,然后触发弹窗

"onclick="alert(1)成功

image-20210728081116409

level-5 过滤<script和on

试试前面几题的payload,都不行

'onclick='alert(1)点击搜索后,它自动把onclick换成了on_click,有带奇怪哦

image-20210728081359892

看看源码

image-20210728081953645

它把on,<script替换了,导致语句不能执行

这意味着并没有对script过滤,构造一个只有单词script的语句:"><a href=javascript:alert(1)>xss</a>

image-20210728082659417

点击xss即可弹窗

image-20210728082718172

posted @ 2021-07-28 08:32  1ink  阅读(124)  评论(0编辑  收藏  举报