XSS Challenges闯关笔记

1 第一关

  • 地址:https://xss-quiz.int21h.jp/
  • 思路
    • 首先输入 aa<script>alert(document.domain)</script> 来测试,点击F12进入浏览器开发者模式可以发现,无论输入框输入什么内容都会在 <b></b> 中显示
    • 因此可以尝试在脚本前闭合b标签达到执行脚本的效果
  • 绕过方法
    • 闭合标签 </b><script>alert(document.domain)</script>
    • 闭合效果:<b></b> <script>alert(document.domain)</script></b>
      • 最后多余的闭合标签不会引起页面错误

2 第二关

  • 地址:https://xss-quiz.int21h.jp/stage2.php?sid=744e537070d0e5c7ccdbbdfe3a91ac83261c8da8
  • 思路
    • 输入aa 和脚本来测试,在浏览器的控制台中可以发现,输入框的值是input标签的value的值
    • 因此可以尝试闭合value属性和input的标签来绕过
  • 绕过方法
    • 闭合属性和标签 "><script>alert(document.domain)</script>
    • 闭合效果:<input name="p1" value=""> <script>alert(document.domain)</script> ">

3 第三关

  • 地址:https://xss-quiz.int21h.jp/stage-3.php?sid=3938ab57736ca759ceb326ab0a2899fb6dc9ded6

  • 思路

    • 提交几个值测试,在浏览器的控制台中可以发现,值最后都会以 <b>"xxx"</b> 的形式展现,说明输入框中的值被进行了实体编码,因此无论输入什么都会被当成字符串

    • 使用Burpsuite抓取提交的请求包时发现,除了输入框中的值会被传递,下拉框中的值也会被传递

    • 而下拉框中的值因为不属于用户输入,因此一般不会过滤,所以可以通过修改下拉框传递的值来实现绕过

  • 绕过方法

    • 在Burpsuite中更换注入参数:p1=aa&p2=<script>alert(document.domain)</script>

4 第四关

  • 地址:https://xss-quiz.int21h.jp/stage_4.php?sid=aec81c03a8c6ca995a7523a162929bd499ba637e

  • 思路

    • 和第三关思路类似,当想通过更改下拉框的值实现绕过时,发现下拉框的值也被做了实体编码

    • 用Burpsuite进行抓包时发现,除了p1和p2还多了一个参数p3

    • 在浏览器控制台中搜索 hackme ,发现它是hint这个input框的名字

    • 因此可以通过在数据包中闭合value属性值来实现绕过

  • 绕过方法

    • 更换注入参数并闭合属性值:p3="><script>alert(document.domain)</script>

5 第五关

  • 地址:https://xss-quiz.int21h.jp/stage--5.php?sid=97dea04c59754f3d89c1e932b76d3d6cdcd793dd
  • 思路
    • 输入测试字符,发现前端对输入的字符长度做了限制
    • 在浏览器控制台发现输入的值显示在input标签中的value中
    • 使用Burpsuite进行抓包,更改要提交的值即可
  • 绕过方法
    • 改包:p1="><script>alert(document.domain)</script>

6 第六关

  • 地址:https://xss-quiz.int21h.jp/stage-no6.php?sid=7857094d1cf53e53927cc8cbc30fbcdc0e4761d0
  • 思路
    • 输入测试字符发现,值在input标签的value中显示,并且对标签符号(即 >和<)进行了转义,导致无法闭合标签
    • 但是没有转义 "
    • 因此可以通过直接在input标签中添加事件来执行脚本,从而绕过对尖括号的限制
  • 绕过方法
    • 闭合属性创建事件:"onmoseover=alert(document.domain) name="a
      • onmouseover代表鼠标滑过时会触发事件
      • name="a 是为了闭合多余的引号,因为第一个引号闭合了value属性会导致后面多出一个引号

7 第七关

  • 地址:https://xss-quiz.int21h.jp/stage07.php?sid=90a25bf8166e572c5a252cac35b7f18f24e6f07f
  • 思路
    • 和第六关一样,但是在输入payload之后发现控制台的代码显示为 value=""onmouseover="alert(document.domain)" 事件和属性之间没有了空格分开
    • 因此尝试在中间插入空格使得代码生效
  • 绕过方法
    • 添加分隔符:" onmouseover=alert(document.domain)

8 第八关

  • 地址:https://xss-quiz.int21h.jp/stage008.php?sid=a7ca3ce1da1275282c846eb82c872ea09ab45f38
  • 思路
    • 该题是生成一个以输入框内容为href值的链接
    • 因为 javascript:; 代表链接为空,且可在冒号后输入js的代码,因此可以通过该种方法来进行绕过
  • 绕过方法
    • 在链接中执行JS:javascript:alert(document.domain);

9 第九关

  • 地址:https://xss-quiz.int21h.jp/stage_09.php?sid=f4f2718602f6b82085868ffefb3b8715ba759887
  • 思路
    • 理论上是要在IE浏览器中抓包将参数值用UTF-7编码再绕过,但是因为该种方式只在IE生效且UTF-7已经不流行
    • 于是在浏览器控制台中找到hint的输入框,在其中添加onmoseover事件来实现弹窗,从而跳过本关

10 第十关

  • 地址:https://xss-quiz.int21h.jp/stage00010.php?sid=57cc60427e0c62875bdbb135ebcb4ec36685a436
  • 思路
    • 输入测试字符发现会在input中的value显示,但是当输入测试payload时发现,domain被过滤了导致脚本无法执行
    • 过滤可以考虑的方法有多种,双写或者编码
  • 绕过方法
    • 双写:"><script>alert(document.dodomainmain)</script>

11 第十一关

  • 地址:https://xss-quiz.int21h.jp/stage11th.php?sid=05b0b21e47b114935f31e9a7f0c45d06b793487d
  • 网址无法打开,打开之后一片空白,换了几个浏览器都是,有朋友知道为什么的可以评论或者私信我哦谢谢

12 第十二关

  • 地址:https://xss-quiz.int21h.jp/stage_no012.php?sid=13605dae8aa056ef1883f62cba1655c1e305dcb7

  • 思路

    • 尝试了普通字符,闭合标签,闭合属性,使用JS事件等方式后,发现网页对 < > " 等符号进行了过滤

    • 根据上方的hint部分提示,发现网页将 00空字符 20空格 < > "' 都转换成了空,因此无法执行脚本代码

    • 因此尝试使用反引号 ` 来绕过对引号的限制,并添加事件绕过对标签符号的限制
      PS:反引号在键盘上数字1的左侧,英文状态下点击即为反引号

  • 绕过方法

    • ``onmouseover=alert(document.domain) 且只能在IE浏览器中成功实现

13 第十三关

  • 地址:https://xss-quiz.int21h.jp/stage13_0.php?sid=cbfca30267ad1ddbb7cf15a1c5b8e5c7ce379a98
  • 思路
    • 和第十二关类似,过滤了尖括号和引号,尝试在style中更改样式
    • 因为CSS中可以使用内联样式
  • 绕过方法
    • backround:url(alert(document.domain)) 但是同样只能在IE 6版本中被触发

14 第十四关

  • 地址:https://xss-quiz.int21h.jp/stage-_-14.php?sid=70ba07465ffddf7ee5551af575612325c6d4a27a
  • 思路
    • 和第十三关类似,不过在使用相同的代码后在浏览器控制台中发现url变成了xxx
    • 找到hint部分的提示,发现是网页对这些关键词进行了过滤
    • 因此尝试插入反斜杠或者注释符号来绕过
  • 绕过方法
    • backround:ur/**/l(alert(document.domain)) 通过在关键词之间添加注释符号的方法来绕过替换;同样只能在IE浏览器中实现

15 第十五关

  • 地址:https://xss-quiz.int21h.jp/stage__15.php?sid=4922ff01ca471b8ce8314ada62e5ebb8dca84036
  • 思路
    • 输入测试代码,发现对尖括号和引号进行了过滤
    • 因此可以尝试编码绕过
    • 将引号和尖括号进行ascii编码,提交之后发现ascii编码的 \ 也被过滤
    • 因此将 \ 双写从而绕过
  • 绕过方法
    • ascii编码并双写 \\\u0022\\u003e\\u003cscript\\u003ealert(document.domain)\\u003c/script\\u003e

16 第十六关

  • 地址:https://xss-quiz.int21h.jp/stage00000016.php?sid=69e30e68c3f21996d48123d1126c53d39bc9f69f
  • 网址无法打开

17 第十七关

  • 地址:https://xss-quiz.int21h.jp/stage-No17.php?sid=3434f8606bcf892373f391f5cc4e2fcb5e1c9097
  • 思路
    • 根据提示可知属于宽字节绕过,且只能在老IE浏览器中实现,比如IE6 ,由于我电脑上的是IE11,就暂时先不演示了

18 第十八关

  • 地址:http://xss-quiz.int21h.jp/stage__No18.php?sid=e9cd87a31a1b373f6283b698f3762758db319f2b
  • 思路:同样只能在IE的老版本中实现

注:

  1. 本文章仅供学习参考,禁止以此做任何违法操作
  2. 文章仅代表个人观点,有任何错误欢迎批评指正
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值