新手打 XSS-level(1-13) 靶场心得和总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着互联网的不断发展,网络安全这门技术也越来越重要,很多人都开启了学习网络安全,本文就介绍了网络安全学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、XSS是什么?

跨站脚本攻击(Cross-site Scripting,通常称为XSS),是一种典型的Web程序漏洞利用攻击。攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用,当用户访问网页时触发恶意脚本的执行,从而达到窃取用户个人数据、弹出广告,甚至篡改网页内容等攻击目的。在线论坛、博客、留言板等共享平台是跨站脚本攻击的典型目标。

二、解题思路

通关基础:语法板块

常见XSS语句标签,<input>

1、<input onclick=alert(360)>

2、<input onfocus=alert('xss')>

3、<input onblur=alert("xss") autofocus>

4、<input autofocus>    离开竞争焦点,从而触发onblur事件

"><sCRiPt>alert(1)</sCrIpT> 
<script>alert(1)</script>

< img src=# onmouseover=alert(1)>
< img src=javascript:alert(1)>

<a href= 'xss') > 
<a href="" onclick=alert(1)> xss</a >
<a href=javascript:alert('xss')> xss</a >

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

<input onclick=alert(360)>

<input onfocus=alert('xss')>

<input onclick=alert(360)>

autofocus onfocus=alert(1)

了解熟悉上面的 XSS 语法。

第一关:无过虑机制

例题如下:
在这里插入图片描述

从界面中我们可以知道除了URL就没有其他地方可以进行交互了,所以我们在URL出直接输入 script 语句来测试,发现网页没有过滤机制。所以我们可以很简单的插入 XSS 语句。

第二关:闭合标签

例题如下:
在这里插入图片描述
思路:1、直接在搜索框中输入 去测试网页,发现网页没有反映,右击查看源代码,内容如下:
在这里插入图片描述

我们发现我们输入 <script>alert(1)</script>被放在 value的值中,如果 script 标签放在 value 的值中,我们可以将它看成是一个字符串被赋给 keyword ,不能实现我们的要求,所以我们要将 script 标签独立出来。如何将script 标签独立出来?

这里我们就涉及到闭合标签的问题:

正常的html 语句应该如下:

<input name=xxx value="xxx">

但是我们的script标签要独立出来,先看源代码:

<input name=xxx value="<script>alert(1)</script>">那如何独立出来呢?

将代码改成: <“”>的这个样子。

就是在输入的 script 标签前面加个 “> 这个的目的是把 script 标签 前面的部分闭合掉(就是变成一个完整的Html语句),后面的 <” 的这个目的也是把 script 标签 后面的部分闭合掉(就是变成一个完整的Html语句)。这个就是闭合思路。注意尖括号的匹配。

这就是将 script 语句独立出来,即闭合标签。

第三关:单引号闭合+添加事件

解题思路:任何XSS 题拿到后的第一反应是测试 <script>alert(1)</script>,测试后网页发现网页没有变化,查看网页源代码,内容如下:

在这里插入图片描述

我们可以发现第17行这里的 value 值中没有正常显示我们的 script 标签,我们发现它在 value 中的尖括号被转换成了 &It ,我们先试着将将 script 语句独立出来(闭合标签),即在搜索框中输入 ‘> <script>alert(1)</script> <’ 发现还不行,(注意:这里的单引号和双引号是看源代码中 value 的值使用的是单引号还是双引号)右击查看网页源代码,内容如下:

在这里插入图片描述

    我们发现第17行本来是"<>"的地方变成了 &It 。说明这里过滤了 "<>",所以我们要使用没有 "<>" 的事件。我们可以用使以autofocus onfocus=alert(1)个事件。在搜索框中输入这事件,发现网页没说明变化,再此查看源代码,内容如下:

在这里插入图片描述

我们发现autofocus onfocus=alert(1)这个事件变成了一个字符串的形式赋给了 keyword ,不是我们想要的效果,现在我们要将该事件独立出来,那我们应该输入 ' autofocus onfocus='alert(1) XSS语句,得到的第17行的html 语句如下:

<input type=keyword value=' autofocus onfocus='alert(1)'>

在这里我们可以看到 autofocus 前面的单引号和 value 的第一个单引号拼成了一对, alert 前面的单引号和 alert后面的单引号拼成了一对,如此才是一个完整的 html 语句,该语句才成被执行。

然后输入 ' autofocus onfocus='alert(1) XSS语句到搜索框,发现成功。

第四关:双引号闭合+添加事件

解题思路:先在搜索框中输入 script 语句,发现界面变成下图所示:

在这里插入图片描述

发现搜索框中的"<>"没了,右击查看网页源代码,内容如下:

在这里插入图片描述

我们可以发现第17行这里的 value 值中没有正常显示我们的 script 标签,我们发现它在 value 中的尖括号被转换成了 &It ,我们先试着将将 script 语句独立出来(闭合标签),即在搜索框中输入 “> <”" 发现还不行,(注意:这里的单引号和双引号是看源代码中 value 的值使用的是单引号还是双引号)右击查看网页源代码,内容如下:
在这里插入图片描述

然后发现不能使用"<>",那我们就只能添加事件, 输入 “ autofocus onfocus=“alert(1) XSS语句到搜索框中,其中autofocus onfocus=alert(1) 为鼠标事件。而该鼠标事件前面的 ” 是为了和value的第一个双引号进行闭合,而 alert(1) 前面的双引号是为了和value 的第二个双引号进行闭合。所以在搜索框中输入 “ autofocus onfocus=“alert(1) XSS语句,第十七行的html 代码如下:

<input name=keyword value="" autofocus onfocus="alert(1)">

该html代码才是完整的代码,在这个地方就是要注意闭合(双引号和尖括号的配对)

第五关:不同标签的尝试(新建标签)

例题:

解题思路:按照同样的方法测试弹窗,显示如下界面:

在这里插入图片描述

右击查看网页源代码:我们可以看到第17行中的 value 值中 script 关键字下面出现下滑线,所以该script 关键字被过滤,我们可以尝试其他的方法。
我们可以发现第17行这里的 value 值中没有正常显示我们的 script 标签,我们发现它在 value 中的尖括号被转换成了 &It ,我们先试着将将 script 语句独立出来(闭合标签),即在搜索框中输入 ”> <"发现还不行,右击查看网页源代码,内容如下:

在这里插入图片描述

我们可以看到第17行中的 script 关键字下面被自动加了下划线,就代表该 script 关键字被过滤掉了,那我们可以尝试一下其他的 XSS 语言,即上面的语法板块的内容,任意一个即可,例如在搜索框中输入:<a href=javascript:alert('xss')> xss</a >这样的语句

发现出现如下界面:

在这里插入图片描述

还是没成功,右击查看网页源代码,思考为什么:

在这里插入图片描述

发现还是之前的问题,输入:<a href=javascript:alert('xss')> xss</a >的代码没有被独立出来,所以我们现在要做的是代码独立。输入:"> <a href=javascript:alert('xss')> xss</a ><" 的代码,我们发现页面变成了这样

在这里插入图片描述

点击出现新的超链接就可以通过此关。

其实这里许多题都有考察 你们是否正确的闭合标签,所以学会看 网页源代码是很重要的。

第六关:大小写绕过

例题:
解题思路:
  1、在输入的搜索框中 输入<script>alert(1)</script> 点击搜索,结果显示如下图:

在这里插入图片描述

我们可以看到 script 关键字下面被加了下滑线,表示该关键字不可以用。那我们就开始猜测是否过滤了大小写,是否过滤了冗余都可以去试试,结果我们用大小写的方式可以成功。

第七关:直接将script关键字过滤掉(双写绕过)

例题如下:

在这里插入图片描述

解题思路:1、先输入<script>alert(1)</script>测试网站,但我们发现搜索框中的script关键字没了,那么我们猜测它可能对该关键字做了设置

在这里插入图片描述

                    2、那我们再试一下大小写script关键字,结果不可以

                    3、在script关键字中在添加script,进行冗余,防止过滤。结果可以 (开始标签和结束标签都要加)
                     注意:要观察到底哪些被过滤了,题中只 过滤了script 关键字,但是“<>” 没有被过滤,所以我们在冗余的时候只需要在写一个 script 关键字在其中即可

第八关:界面提示友情连接(转编码)

解题思路:界面提示友情连接,表示要使用超链接的语句。正常输入超链接语句 <a href=javascript:alert('xss')> xss</a >,查看原代码。发现界面没变化,查看原代码。

在这里插入图片描述
网页源代码如下:

在这里插入图片描述

我们可以发现 href 下面加了一个下划线,故链接不合法,那我们输入 javascript:alert('xss') ,然后发现也是相同原因,那我们只能尝试其他编码转换(直接搜在线编码转换即可),结果发现实验成功。

第九关:界面提示友情连接(检测关键字 转变码加上http://xxx.com)

例题如下:

在这里插入图片描述

从界面我们可以看出这时又关超链接的考察,我们现在搜索框中输入 <a href=javascript:alert(‘xss’)> xss,页面无反应,查看页面源代码,内容如下:
在这里插入图片描述

我们可以发现链接不合法,那我们输入 javascript:alert(‘xss’) ,然后发现也是相同原因,那我们只能尝试其他编码转换(直接搜在线编码转换即可),发现还是显示 您的链接不合法 ,那我们可以考虑考虑是不是规定了必须含有 http://www.xxx.com个格式,所以我们输入如下内容:

转换的编码结果//http://www.baidu.com 点击友情链接,成功。 转换的编码结果//http://www.baidu.com 分析:因为该题要求必须有http://www.xxx.com个格式,所以再输入框中我们要加http://www.xxx.com个格式,但此时会出现两个要实现的操作 一个是 XSS语言,另一个是要跳转到http://www.xxx.com地址,所以我们要注释到我们不用的那个http,让他实现 XSS 语句。

第十关:继续编写URL(隐藏信息)

例题如下:

在这里插入图片描述

思路:由于界面没有任何交互框,所以只能从URL入手。在上图中我们可以看见keyword=well done,我们可以在keyword=well done这个地方试试。

    1、尝试keyword=<script>alert(1)</script>,页面显示没有相关结果,此时查看网页源代码,如下图

在这里插入图片描述

2、此时我们可以知道keyword不能写入 script 语句,但源代码的表单中有3个t_link、t_history、t_sort变量,我们可以尝试从这三个变量入手做尝试。改写后的URL如下图。

在这里插入图片描述

3、由前面可知,keyword不能写入XSS语句,所以我们给他赋个任意值,那我们知t_link、t_history、t_sort这三个变量写入XSS语句,但是在URL中值和值之间用“ & ”进行连接,最终测得如下结果

在这里插入图片描述

4、这表示在t_sort这个变量中我们可以插入值,但此时的 type是隐藏类型,我们要将其改变状态 type="text"

在这里插入图片描述

得到的结果如下:

在这里插入图片描述

    5、我们可以看到 script语句中的"<>"被过滤了,所以我们要考虑没有“<>”的XSS语句。所以我们换一个XSS语句,如下图:

在这里插入图片描述

    得到的结果还是不行,查看源代码,如下图:

在这里插入图片描述

    6、我们可以发现双引号的个数不匹配,我们要将其双引号的个数匹配。不匹配的话语句就不会闭合,会影响后面语句的正确性。所以改完后URL内容如下:

在这里插入图片描述

第十一关:跳转页面的抓包(referer):

解题思路:第一步和第十关的第一步一致:
在这里插入图片描述

网页源代码如下图:

在这里插入图片描述

我们将变量都测完后,发现都不可以写入XSS语句,但是当我们从第十关跳转到第十一关的时候,立刻查看网页源代码,我们可以看见 t_ref 变量是有值的,由此我们可以判断该变量为跳转变量,此时我们要用BP进行拦包。如下图:

在这里插入图片描述

首先我们要先去第十关的页面,在即将跳转的页面出开始拦包,如下图:

在这里插入图片描述

当BP开启了拦包功能后再点确定,实现从第十关页面跳转到第十一关页面的一个拦包,数据包内容如下:

在这里插入图片描述

此时我们可以看见第八行有个 referer: 这表示跳转的页面,将 referer 后面的所有值替换成" type="text" autofocus onfocus="alert(1) 前面的" 为了闭合value的值 , alert(1)前面的" 是为了因 type="hidden"前面的单引号闭合。如此才能算是一个完整的语句。再将数据包发送给服务器即可通过第十一关。

第十二关: user-agent信息

解题思路:

前面和第十关、第十一关思路一致,界面没反应后查看页面源代码,如下图:

在这里插入图片描述

我们可以看出这里也有一个 t_ua 的变量,通过 BP 抓包获取如下数据:

在这里插入图片描述

我们可以看到这里也有一个 referer: 的变量,我们可以再尝试一下第十一关的方法,然后发现没用,但我们也可以发现第三行这里Mozilla/5.0(......),和原代码中的第20行的 value值一致,由此我们知道这个是通过 User-Agent 进行交互,所以我们将User-Agent 的值替换成XSS语言如:" type="text" autofocus onfocus="alert(1) 与数据库进行交互。发现结果成功。如果确保自己替换的代码成功,但网页的User-Agent 值没变,则可能是BP出现 bug 重启BP 再做一遍即可,且网页也要多刷新一下。

第十三关:cookie信息

解题思路如下:前面步骤一样,发现页面没反应,查看原代码,内容如下:

在这里插入图片描述

我们发现 t_cook 变量的 value 有值,我们尝试再URL中直接给它写入XSS语言,结果发现它的值没有改变,所以猜测网页中的t_cook 值不能改变

在这里插入图片描述

那我们就只能通过跳转时抓取的数据包将里面的值改成 XSS 语言,数据包内容如下图,我们直接在 第九行 cookie 中 user 值后面 加上XSS语言,例如:" type="text" autofocus onfocus="alert(1) ,发现成功。

在这里插入图片描述

总结:

写了上面1-13 题,发现 XSS 主要是用在输入框和URL 中,所以在测试网页是否有 XSS 注入可以从输入框和URL 中入手。其次就是要多看网页源代码的格式,让自己插入到输入框和URL中的 XSS 语句能与网页中原本正常的语句闭合,不闭合的话可能就不能发现 XSS 注入了。
一般测 XSS 语句先从最简单的语句开始,用 script 标签,大小写绕过,冗余(双写)绕过,不同的标签使用,闭合,转码,抓包等等。


  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值