第一关

关键代码:

这一关两处的输出都没做任何防护,直接将用户的输入拼接到输出里面.

payload:

第二关

使用上一关的payload显示如下

闭合一下标签就好了.

第三关

htmlspecialchars编码会将预定义的字符转换为 HTML 实体。

字符	替换后
& (& 符号) &
" (双引号) ",除非设置了 ENT_NOQUOTES
' (单引号) 设置了 ENT_QUOTES 后, ' (如果是 ENT_HTML401) ,或者 ' (如果是 ENT_XML1、 ENT_XHTML 或 ENT_HTML5)。
< (小于) &lt;
> (大于) &gt;

这一关两处输出点都使用了htmlspecialchars编码.那么>和<都不能用,script标签也就不能用了. 但是这里单引号能用能起效果,应该是没有做特殊设置吧.

payload

回车之后点击搜索框即可

第四关

这一关用第三关的payload,将单引号改成双引号就行.

第五关

这一关将<script和on关键词进行了替换,并且用户的输入先用strtolower函数转成了小写, 前面的payload都无法使用了.

黑名单只禁用两个有啥用嘛,换个标签闭合就行.

payload:

第六关

这里黑名单禁用的比第五关多了.但是貌似忘了将用户的输入同意转成小写.大小写绕过即可

payload:

第七关:

这一关存在黑名单,并且将用户的输入转成了小写,但是只是将一些关键词替换为空,这样可以双写绕过

payload:

第八关

这一关并没有将关键词替换成空,最后还把双引号转义输出.但是这一关加了个功能点,用户的输入会拼接到a标签中做成一个可以跳转的友情链接.那么我们可以拼接一个javascript:alert(/xss/)进去,但是script会被替换,这里用到了html实体化编码,将script中的某个字符编码掉.

payload

javascript:alert(/xss/)

输入到框里面点击添加友情连接即可

第九关

这一题在上一题的基础上多加了一个strpos,strpos查找字符串首次出现的位置,如果没有查找到返回False,也就是说他这里指定了用户的输入中要有http://字符串,不然提示你的链接不合法.应该是认为链接中有http://开头的就算是合法的吧.

payload

javascript:alert(/xss/)//http://

第十关

这一关有点坑,我看源码之后才知道还隐藏了三个框,填上一些参数之后发现第三个框可以是有效的输入.

payload

第十一关

这一题不看源码真没办法.这一关在上一关隐藏的基础上多隐藏了一个t_ref.先是像上一关那样闭合但是没有弹窗

看源码,这里的$str11来自referer头.然后将>和<替换成空变成$str33然后拼接到字符串中.

那么我们需要在refer头里面插入xss

payload:

放包,点击,弹框.

第十二关

这次的$str11来自HTTP_USER_AGENT头

payload

hel10" onclick=alert(/xss/) type="text

将UA头修改成payload,放包,点击,弹框

第十三关

这一关建立了一个cookie头.

把payload插到cookie里面

Cookie: user=call+me+maybe?" hel10" onclick=alert(/xss/) type="text

第十四关

这一关用到了exif xss,但是跳转的这个网站好像有问题

简单说一下exif xss的原理,exif可以记录数码照片的属性信息和拍摄数据。可使用鼠标右键进入属性页面查看部分信息。有些网站就会读取图片的属性信息,当读取到的是恶意的信息的时候就会触发payload.先知上面的图.

第十五关

直接拿先知上面的payload吧,自己并没有复现成功

这一关用了angularjs的ng-include,直接在包含的页面里用<script>触发不了,用了img标签。

遵循SOP,只好调用第一关代码。

需要单引号包裹,否则变成注释。

paload:

/level15.php?src='level1.php?name=test<img src=1 onerror=alert(1)>'

AngularJS ng-include 指令

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

参考链接

https://xz.aliyun.com/t/1206?accounttraceid=74ab404d-2a01-4a1c-8b87-36ad367dbe11#toc-13

https://lanvnal.com/2019/02/01/xss-chuang-guan-you-xi-jie-ti-ji-lu/#toc-heading-15

XSS闯关挑战(1-15)的更多相关文章

  1. XSS闯关游戏准备阶段及XSS构造方法

    请下载好XSS闯关文件后,解压后放在服务器的对应文件夹即可 在该闯关中,会在网页提示一个payload数值 payload,翻译过来是有效载荷 通常在传输数据时,为了使数据传输更可靠,要把原始数据分批 ...

  2. [第二章 web进阶]XSS闯关-1

    定义:跨站脚本(Cross_Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种.它允许恶意用户将代码注入网页,其他用户浏览网 ...

  3. XSS Challenges闯关笔记

    前言 做xss做疯了再来一个. 地址:https://xss-quiz.int21h.jp/ ,这个貌似是日本的一个安全研究员yamagata21做的. 做到第九关就跪了,而总共有二十关.一半都还没有 ...

  4. 某xss挑战赛闯关笔记

    0x0 前言 在sec-news发现先知上师傅monika发了一个xss挑战赛的闯关wp([巨人肩膀上的矮子]XSS挑战之旅---游戏通关攻略(更新至18关)https://xianzhi.aliyu ...

  5. 《JavaScript闯关记》视频版硬广

    <JavaScript闯关记>视频版硬广 stone 在菜航工作时,兼任内部培训讲师,主要负责 JavaScript 基础培训,2016年整理的<JavaScript闯关记>课 ...

  6. 网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒

    前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞 ...

  7. Pythonchallenge一起来闯关(二)

    前情提要:Pythonchallenge一起来闯关(一) 这一篇来闯关10-15.感觉这几关比先前的难了不少,有的题目完全没思路. 10. 页面源码中的链接点击后有a = [1, 11, 21, 12 ...

  8. 《JavaScript 闯关记》

    为何写作此课程 stone 主要负责基于 Web 的企业内部管理系统的开发,虽然能够熟练地使用 JavaScript,但随着对 JavaScript 的理解越来越深,才发现自己尚未掌握其精髓. 201 ...

  9. python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点

    python 闯关之路四(下)(并发编程与数据库编程)   并发编程重点: 1 2 3 4 5 6 7 并发编程:线程.进程.队列.IO多路模型   操作系统工作原理介绍.线程.进程演化史.特点.区别 ...

随机推荐

  1. MATLAB导入txt和excel文件技巧汇总:批量导入、单个导入

    在使用MATLAB的时候,想必各位一定会遇到导入数据的问题.如果需要导入的数据其数据量巨大的话,那么在MATLAB编辑器中将这些数据复制粘贴进来,显然会在编辑器中占据巨大的篇幅,这是不明智的. 一般来 ...

  2. 关于安装运行MYSQL8.0简单使用及注意事项 On Docker Desktop & WSL2

    背景介绍 MYSQL是业界非常流行的一款关系型数据库系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据 ...

  3. codeforces 830E dp

    大致题意: n场比赛,k个钱币.赢一场获得一个钱币,输一场失去一个钱币,一旦钱币数量为2k个或者0个,就马上离开比赛.给出n个长度字符串,由W,D,L,?四个字符组成,W表示赢,L表示输,D表示平局, ...

  4. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

  5. SpringBoot:WebSocket使用Service层的方法

    方法一: 创建工具类 ApplicationContextRegister.java import org.springframework.beans.BeansException; import o ...

  6. MyBatis:MyBatis-Plus条件构造器EntityWrapper

    EntityWrapper 简介 1. MybatisPlus 通过 EntityWrapper(简称 EW,MybatisPlus 封装的一个查询条件构造器)或者 Condition(与 EW 类似 ...

  7. Java:Java实例化(new)过程

    实例化过程(new) 1.首先去JVM 的方法区中区寻找类的class对象,如果能找到,则按照定义生成对象,找不到 >>如下2.所示 2.加载类定义:类加载器(classLoader)寻找 ...

  8. [转]12个scp传输文件的命令栗子

    原文地址: https://www.cnblogs.com/voidy/p/4215891.html copy原文是为了修改部分错误以及便于记录自己的笔记.英文原文点:这里 安全复制 Scp(Secu ...

  9. bugku SKCTF管理系统

    这题hint是sql约束攻击...sql约束攻击其实我没了解过,当时就各种百度,现在总结一下 0x01: sql约束攻击:通常是sql查询语句select * from username= 'lin' ...

  10. Java | 字符串缓冲区(StringBuilder)

    为什么要出现字符缓冲区 我们都知道,String类是不可变的,但是有的时候,我们要用到字符串的拼接,如果拼接的数量小的时候,还可以,但是如果拼接的数据量太大的话,内存的占用就太大了,所以这个时候再用S ...