xss靶场原理以及绕过方法

文章详细介绍了XSS攻击的三种类型——反射型、存储型和DOM型,阐述了攻击原理,如在网页中插入JavaScript脚本,并展示了如何通过构造payload来绕过过滤机制进行攻击。同时,文章通过XSS靶场实例讲解了攻击手段和绕过方法,强调了XSS攻击的危害,如窃取cookie和未授权访问,并提示了防御措施的重要性。
摘要由CSDN通过智能技术生成

xss攻击原理(个人理解):在可插入点中插入js脚本语言,插入到web服务器,在对方管理员浏览时会执行所写的脚本语言

xss攻击可以分为三类:
1、反射型:攻击数据不会存储在对方服务器上,只与该网站进行一次交互(在后端语言处理)
2、存储型:攻击数据会存储在对方服务器上,持续对该网站进行攻击(也是在后端语言处理)
3、DOM型:在url上攻击,也可以说是GET上,只与前端交互,不与后端交互

xss攻击危害:
1、窃取cookie
2、未授权访问

攻击方法:
1、找xss插入点
2、黑盒测试,收集过滤信息
3、构造payload来绕过过滤,然后进行攻击

这里结合一下xss靶场讲一下攻击手段,以及原理和绕过方法

屏幕截图 2023-06-27 105739.png

首先可以看到url上有?keyword=这些,这里就可以确定这是DOM型攻击,只与前端交互

我们可以尝试用js语言看看可以
payload:

屏幕截图 2023-06-27 105836.png

第一关,啥也没有做,直接插入js脚本就行,可能有些人会问窃取cookie怎么弄,这里就是在alert()这修改下就行,或者利用xss平台也可以,xss平台会给payload,不用自己构造,xss平台有很多,在网上搜xss平台就行,看你自己个人用那个xss平台

我用的是这个 xss平台:http://xsscom.com//index.php?do=login

屏幕截图 2023-06-27 112426.png

首先还是利用上面payload测试下

屏幕截图 2023-06-27 133014.png

屏幕截图 2023-06-27 133027.png

通过看回显的页面源码发现,插入的语句插入在input的标签中,没有触发该js脚本,因此我们可以闭合掉input标签来实现该js脚本触发
paylaod:">

屏幕截图 2023-06-27 134624.png

接着看下一关

屏幕截图 2023-06-27 135610.png

屏幕截图 2023-06-27 135616.png

发现我们传进去的参数部分被实体化了,<"> ,但是它的闭合方式跟上一关的不一样,这关事单引号,那我们就试一下单引号闭合看下,要注意的是咋们要绕过实体化,所以我们重新构造一个payload

payload:'οnfοcus=javascript:alert() ’

屏幕截图 2023-06-27 142650.png

接着看下一关的绕过方式,还是一样,首先测试一下过滤的啥字符

屏幕截图 2023-06-27 194538.png

屏幕截图 2023-06-27 194544.png

可以看到<> 被替换成空,所以我们就使用 onfocus 事件看下

屏幕截图 2023-06-27 194833.png

我们结合源码来看下这关过滤了啥

屏幕截图 2023-06-27 194518.png

发现这关就是将 < > 替换成了空,绕过着俩个 < > 就行

好,接着看下关

屏幕截图 2023-06-27 195325.png

屏幕截图 2023-06-27 195335.png

屏幕截图 2023-06-27 202400.png

屏幕截图 2023-06-27 202407.png

通过测试发现,on 和 script被过滤了,再接着测试下大小写过滤了没

屏幕截图 2023-06-27 203031.png

发现也被过滤,因此这里要利用其他标签来绕过这个过滤,标签有很多,看自己想用那个就用那个,但是要注意的是这里是input标签要先闭合input标签,然后在插入其他标签

payload:“>test<”

屏幕截图 2023-06-27 203857.png

这里要点test才可以进行跳转

接着下一关,我就不一个一个测试了,直接审计源码

屏幕截图 2023-06-28 091132.png

这里可以看到

屏幕截图 2023-06-28 091741.png

接着看下一关源码

屏幕截图 2023-06-28 091841.png

这里也是替换,但是它是把这些替换成空,因此我们可以利用双写来绕过
payload:“>alert(1)<”

屏幕截图 2023-06-28 092125.png

接着下一关,这关跟前面有点不一样

屏幕截图 2023-06-28 151548.png

这里就是多了一个双引号过滤,而且这里还是插入到a标签的超链接中,因此我们这就要利用a标签的隐藏属性,a标签自动Unicode解码,因此我们利用unicode编码来绕过

paylaod:javascript:alert(1) 然后就是unicode进行编码
javascript:alert(1)

屏幕截图 2023-06-28 152139.png

接着下一关,还是审计代码

屏幕截图 2023-06-28 152905.png

过滤手段一样,但是这里有一点的是,这里多了一个判断,判断写入的url有没有https:// ,没有的话直接出错,有的话才能插入,所以这里要利用html的一个特性,就是注释的代码也会被执行,所以我们吧http://注释掉来绕过

payload:javascritp:alert()/http:/// 还是进行编码
javascript:alert(1)/http:///

屏幕截图 2023-06-28 153537.png

接着下一关

屏幕截图 2023-06-28 160957.png

看这关的源码发现多出来很多隐藏标签,这点很重要
通过给的来传参数发现不可行,这里就要用到隐藏的参数了

屏幕截图 2023-06-28 163016.png

屏幕截图 2023-06-28 163118.png

然后分析一波源码

屏幕截图 2023-06-28 163233.png

发现原理有俩个传参数的值,但是插入到语句的是t_sort这个传参的值,因此这里要用到t_sort来传参

payload:?t_sort=" οnfοcus=javascript:alert() type="text
这里写type=text是为了让隐藏了的input的标签显示出来

屏幕截图 2023-06-28 163736.png

后面的几关也是先看页面源码

屏幕截图 2023-06-28 163920.png

这关也是隐藏的标签应该跟上一关差不多,但是你看这个源码,t_ref这个标签,ref有点像referer的HTTP请求头,为什么这样猜呢,因为你看它后面接了http://127.0.0.1这个请求,想着跟请求的,基本上都是HTTP请求里面的请求头

过滤信息还是分析源码

屏幕截图 2023-06-28 165223.png

就过滤了<> ,因此我们利用onfocus事件来触发

payload:" οnfοcus=javascript:alert() tyep="text

屏幕截图 2023-06-28 165336.png

继续看下一关的绕过

屏幕截图 2023-06-28 191321.png

这关很明显是跟上关一样,就是改了一下它插入的地方,这里显示是 t_ua 明显就是user-agent 这个HTTP请求头
,过滤这些也是直接看源码分析

屏幕截图 2023-06-28 191647.png

跟上面的的过滤手法一样,就不用我多说了吧

屏幕截图 2023-06-28 192011.png

这里就是换成了user-agent

看下一关

屏幕截图 2023-06-28 205052.png

这里看到t_cook,cook有点像cookie,先盲猜一下,接着审计一下源码

屏幕截图 2023-06-28 205351.png

果然真是cookie,我们直接利用开发者工具来修改cookie,然后刷新一下就可以了

屏幕截图 2023-06-29 100921.png

下一关由于跳转到网站已经挂了,所以这关没必要做,直接下一关

先看页面源码

屏幕截图 2023-06-29 104656.png

看到了一个ng-include,这个ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号

那我们包涵第一关来看看能成功吗

paylaod:?src=‘level1.php’

屏幕截图 2023-06-29 114824.png

接着就用利用第一关的传参点来来进行xss攻击

屏幕截图 2023-06-29 115043.png

这里也可以包含其他关,但是第一关简单,我们就从简单入手,太难了现在也弄不明白

来看下一关

屏幕截图 2023-06-29 115245.png

可以看到插入的信息插入在center标签中
过滤信息还是审计源码

屏幕截图 2023-06-29 115520.png

发现过滤script、空格、/、空格绕过方法有 %0a、%09 (tab) 、 ${IFS} 、 $IFS%09 等很多种方法

payload:<img%0asrc=1%0aοnerrοr=alert(1)>

屏幕截图 2023-06-29 120026.png

下面的关都是利用flash,这里很多浏览器不支持,所以我就不测试了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

keepL!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值