地址:http://xss-quiz.int21h.jp/
首先输入“123”进行测试:
F12键查看网页源码:
发现注入点即为标签中,构造payload闭合标签即可。
payload:
"
注入成功:
#######################################################################
地址:Stage#2
首先输入“123”进行测试:
F12键查看网页源码:
发现注入点即为标签中,构造payload使标签和value属性提前闭合即可。
payload:
">
注入成功:
#######################################################################
地址:Stage#3
首先输入“123”进行测试,F12键查看网页源码:
发现注入点为标签处,构造构造payload使标签闭合:
发现并未弹窗,查看源码发现<>被转义:
寻找其他注入点,尝试使用burpsuite抓包,修改country(Japan)值:
修改后(特殊字符使用url编码,也可不编码):
payload:
"
注入成功:
#######################################################################
地址:Stage#4
首先输入“123”进行初探:
发现与上一关有些类似,使用burpsuite抓包:
大大的hackme明显就是注入点了,其实p1,p2参数的值经过转义,很难注入,其实仔细查看网页源码可以发现有表单有隐藏参数,就是这个hackme:
使用burpsuite修改p3参数值:
payload:
">
注入成功:
#######################################################################
地址:Stage#5
首先输入“123”进行初探:
发现注入点依旧在value处,输入框构造payload发现长度受到限制,maxlength="15",故修改源码中长度限制:
payload:
">
注入成功:
#######################################################################
地址:Stage#6
首先输入“123”进行初探,发现注入点就在value处:
输入“">”发现<>被转义:
可以利用js事件避免使用<>,payload:
"onclick=alert(document.domain) 1="
或:
"onmouseover=alert(document.domain) 1="
闭合后,构成源码:
经过点击(onclick)或鼠标移动(onmouseover),注入成功:
#######################################################################
地址:Stage#7
输入“123”进行初探,发现注入点依旧在value处:
观察burpsuite中的响应包,发现value值后没有引号(本人暂认为这是本题中空格可以作分隔符的必要条件),但在浏览器中显示有引号,可能是浏览器自动补充的原因:
burp:
firfox:
构造payload进行注入发现“ " ”被转义:
利用空格分隔属性构造payload:
1 onclick=alert(document.domain)
或:
1 onmouseover=alert(document.domain)
闭合后,构成源码:
经过点击(onclick)或鼠标移动(onmouseover),注入成功:
#######################################################################
地址:Stage#8
输入“123”进行初探,生成一个url为123的链接:
使用javascript伪协议构造payload:
payload:
javascript: alert(document.domain)
点击生成的链接javascript: alert(document.domain),注入成功:
#######################################################################
地址:Stage#9
需要使用IE浏览器,暂跳过
#######################################################################
地址:Stage#10
输入“123”进行初探,发现注入点依旧在value处:
构造普通payload注入发现关键字domain被过滤:
再次构造payload:
">
过滤闭合后网页源码:
成功弹窗,注入成功:
#######################################################################
地址:Stage#11
输入“123”进行初探,发现注入点依旧在value处:
构造普通payload注入发现关键字script被xxx:
构造js事件发现onclick和onmouseover同样被xxx:
使用Javascript伪协议javascript: alert(document.domain),发现同样被xxx:
尝试绕过检测script的正则表达式,使用html编码对script任意字符进行编码进行尝试,如对r进行html编码payload:
">hackme
点击链接,注入成功:
#######################################################################
地址:Stage#12
需要使用IE浏览器,漏洞失时效性,暂跳过 =.=
#######################################################################
地址:Stage#13
需要使用IE浏览器,漏洞失时效性,暂跳过 =.=
#######################################################################
地址:Stage#14
需要使用IE浏览器,漏洞失时效性,暂跳过 =.=
#######################################################################
地址:Stage#15
查看网页源码,发现是基于Dom的xss漏洞(通过本地js语句将内容输出在浏览器中):
构造payload, ,发现并未弹窗,继续查看此时网页源码,发现<>均被html转义,分析此处先对js编码进行解析,再对html编码进行解析,故欲采用js编码进行绕过:
xss编码问题请看我另一篇博文,链接:XSS编码绕过 浏览器解析顺序,构造payload使用js编码进行绕过 \x3cscript\x3ealert(document.domain)\x3c/script\x3e, 发现\被过滤:
重新构造payload:
\\x3cscript\\x3ealert(document.domain)\\x3c/script\\x3e
注入成功:
#######################################################################
地址:Stage#16
与stage#15类似,构造payload进行测试 \x3cscript\x3ealert(document.domain)\x3c/script\x3e ,发现\被过滤:
再次构造payload: \\x3cscript\\x3ealert(document.domain)\\x3c/script\\x3e 进行尝试,发现\\未被过滤,未弹窗:
\\u003cscript\\u003ealert(document.domain)\\u003c/script\\u003e
#######################################################################
地址:Stage#17 Stage#18
均需要使用IE浏览器,漏洞失时效性,暂跳过 =.=
完结