靶场介绍
靶场地址:xss-quiz.int21h.jp/
相对于别的靶场来说,这是一个模拟真实环境的xss平台,页面不会给出任何提示
Stage #1
网址:xss-quiz.int21h.jp/
访问目标网站如下图所示
提示:注入以下JavaScript命令 “alert(document.domain)”
输入注入语句:
思路:最简单测试方法,没有任何过滤,注入语句在b标签内
Stage #2
网址:xss-quiz.int21h.jp/stage2.php?…
注入语句:1"><
1">是闭合前面标签
< 是闭合后面标签
思路:常规方法测试,发现注入点在标签的value属性值中
既然是在标签中,那就前后闭合input标签然后在中间加上script就好了
Stage #3
网址:xss-quiz.int21h.jp/stage-3.php…
注入语句:1**
方法:文本框中输入aaa,用burpsuite抓包后,修改p2的值即可
思路:常规方法测试,发现在**标签内,但是闭合标签后仍旧没有作用,用burpsuite抓发查看也没有转移< " 这些特殊字符,最后测试注入点位置不在括号传参p1处而是在p2处
闭合标签后
用burpsuite抓包查看并没有被转义
****
Stage #4
网址:xss-quiz.int21h.jp/stage_4.php…
注入语句:1">< "1
思路:常规输入注入语句,发现输入什么就显示什么,burpsuite抓包查看发现多了一个参数p3=hackme,在firebug中查找hackme是哪个标签传送的值,发现在如图所示位置,那么注入点是p3,闭合字符,burpsuite抓包修改p3的值即可
Stage #5
网址:xss-quiz.int21h.jp/stage–5.php…
注入语句:1">< "1
思路:常规测试发现输入框限制了长度,输入aaa发现注入点在value值处,那么就闭合字符,用burpsuite抓包修改上传的值即可
Stage #6
网址:xss-quiz.int21h.jp/stage-no6.p…
注入语句:
" onmouseover =alert(document.domain) name=“1 或者” οnmοuseοver=alert(document.domain)%0a
onmouseover是鼠标移到上面就会触发的事件
" οnclick=alert(document.domain) name=“1
onclick是鼠标点击会触发事件
思路:输入注入语句< "1发现被html编码了,经查看发现过滤了< >,但是没有过滤 " ,这样我们就不可以用新的标签了,但我们可以在标签里面加新的属性,如 " οnmοuseοver=alert(document.domain) name="1类似这样的,onmouseover是把鼠标放在上面就执行的on时间,onclick之类的也是可以的。
注意:最好burpsuite抓包修改文本框输入的值,因为文本框输入后,有的会被URL编码,不起作用,
Stage #7
网址:xss-quiz.int21h.jp/stage07.php…
注入语句:
" onmouseover =alert(document.domain) name="1
" onmouseover =alert(document.domain)
test οnmοuseοver=alert(document.domain)
思路:输入测试语句aaa,发现注入点在value值处
输入1"><“1发现没有任何变化,猜测< > " 都被过滤了
输入” οnmοuseοver="alert(document.domain) 发现"空格 空格之后的内容被截断了
Stage #8
网址:xss-quiz.int21h.jp/stage008.ph…
注入语句:javascript:alert(document.domain)
思路:输入 发现成了标签的超链接,百度怎么在url中执行js,学到可以构造javascript:alert(document.domain),然后点击超链接,点击过关。
Stage #9
网址:xss-quiz.int21h.jp/stage_09.ph…
注入语句:
思路:抓包试试,发现一个参数charset=euc-jp,百度发现euc-jp是日文编码,我想到把它改回utf-8国际编码试试。仍然不行。。。
大佬WP:
1.用可以识别UTF-7的IE浏览器
2.把抓包内容改成p1=1%2bACI- οnmοuseοver=%2bACI-alert(document.domain)%2bADsAIg- x=%2bACI-&charset=UTF-7
意思是我们提交UTF-7编码的py上去,然后浏览器UTF-7解码出利用py~~(我觉得出题者简直闲的蛋疼,不说现在没有利用utf-7的ie了,哪有什么网页的后台是只能解码utf-7的)
这道题我们只能用firebug的编辑功能过。(每一道题都可以)
Stage #10
网址:xss-quiz.int21h.jp/stage00010.…
注入语句:1"><"1发现domain被过滤
Stage #11
网址:xss-quiz.int21h.jp/stage11th.p…
注入语句:
构造标签在超链接中执行js,构造时将script中任意一个字母用Unicode编码
“>1
思路:
输入1”><“1发现
Stage #12
网址:xss-quiz.int21h.jp/stage_no012…
注入语句:``οnmοuseοver=alert(document.domain) 必须使用IE浏览器
思路:
经测试发现发现< > " 空格 被过滤为空,想用编码能不能绕过(因为过滤了<>",HTML实体是不行的,html实体不能让内容逃出来),试了各种编码实在没办法了,看了大佬WP发现这是一个ie浏览器识别特性,ie浏览器会把 ``(笔记本1左边那颗键两次)识别为双引号,从而让我们的内容逃出来(<>没法逃就设置属性),构造payload。
Stage #13
网址:xss-quiz.int21h.jp/stage13_0.p…
注入语句:
思路:
Stage #14
网址:
注入语句:
思路:
Stage #15
网址:xss-quiz.int21h.jp/stage__15.p…
注入语句:\x3cscript\x3ealert(document.domain);\x3c/script\x3e或者\u003e\u003cscript\u003ealert(document.domain)\u003c/script\u003e
在线16进制加密解密网址:www.cnblogs.com/gggzly/p/88…
在线uncode编码编码网址:www.css-js.com/tools/unico…
思路:
输入1"><"1
发现题目把
<变成了<
变成了>
怎么绕过<和>呢?
16进制编码:
< 变成了 \x3c
变成了 \x3e
\x3cscript\x3ealert(document.domain);\x3c/script\x3e
过滤了单个
\x3cscript\x3ealert(document.domain);\x3c/script\x3e
Stage #16
网址:
注入语句:用八进制编码也可以绕过,即将<>用十六进制编码后再转为八进制,格式是\74、\76
\74script\76alert(document.domain)\74/script\76
思路:
Stage #17
网址:
注入语句:
思路:
Stage #18
网址:
注入语句:
思路:
Stage #19
网址:
注入语句:
思路: