第一关

关键代码:

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

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. python返回列表最大值(java返回数组最大值)

    b=["3","2","1","6","5","2","1" ...

  2. 浅谈最长上升子序列(O(n*logn)算法)

    今天GM讲了最长上升子序列的logn*n算法,但没讲思路... 我看了篇博客,发现-- 说的有道理!!! 首先,举例子: a[7]={1,2,4,3,6,7,5}(假设以1开头) 很明显,LIS=5: ...

  3. UI自动化学习笔记- Selenium元素定位及元素操作

    一.元素定位 1. 如何进行元素定位? 元素定位就是通过元素的信息或元素层级结构来定位元素的 2.定位工具 浏览器开发者工具 3.元素定位方式 Selenium提供了八种定位元素方式 id name ...

  4. codeforces 830E dp

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

  5. Hystrix 使用说明

    1.什么情况下会触发 fallback 方法 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT ...

  6. Linux:CentOS7防火墙 开放端口配置

    查看已开放的端口 firewall-cmd --list-ports 开放端口(开放后需要要重启防火墙才生效) firewall-cmd --zone=public --add-port=3338/t ...

  7. [心得体会]springmvc在requestbody注解下使用jackson转化日期格式

    使用WebMvcConfigurer的方法将converter注入到项目中 @Configurationpublic class ConverterConfig implements WebMvcCo ...

  8. <jsp:param>传递参数,出现乱码问题

    今天在学习<jsp:forward>和<jsp:param>时,用<jsp:param>传递参数时,出现乱码问题,部分代码如下: 1 <jsp:forward ...

  9. Mybatis代码自动生成(含测试)

    一.建立数据库 create database shixun; use shixun; create table user( id int primary key auto_increment , u ...

  10. C语言:常用数学函数

    #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> # ...