当前位置:   article > 正文

xss闯关(1-20)

xss闯关

目录

介绍

环境搭建

xss-1

xss-2

xss-3

xss-4

xss-5

xss-6

xss-7

xss-8

xss-9

xss-10

xss-11

xss-12

​编辑

xss-13

xss -14 

xss-15

xss-16

xss-17

xss-18

xss-19

 xss-20



介绍

XSS(Cross-Site Scripting)是一种常见的Web攻击技术,攻击者通过注入恶意代码,使得在用户访问受到攻击的网站时执行并影响用户的浏览器。XSS攻击通常被用于盗取用户信息、会话劫持、篡改网站内容等非法目的。

环境搭建

xss-labs-master

链接:https://pan.baidu.com/s/1oT_BJjoaSNobGWsKQf9-7A 
提取码:2y4w

xss-1

首先,观察域名,发现这个域名好像可以搞事请

试一试最基础的弹窗

xss-2

查看源码

发现可以构建新的闭合,利用点击事件

payload:"onclick="alert(1)

这时候value=""οnclick="alert(1)"

xss-3

查看源码

发现与xss-2差不多

构造闭合,实现文本框点击事件

payload:'onclick='alert(1)

xss-4

查看网页源代码

尝试"οnclick="alert(1)

点击文本框

payload:"onclick="alert(1)

xss-5

查看源码

输入"οnclick="alert(1)发现没有反应

查看源码分析发现onclick变为o_nclick

尝试大小写和双写绕过发现还是没有反应

伪协议绕过:">click

payload:"><a href='javascript:alert(1)'>click</a>

xss-6

查看源码

发现script被过滤,使用onclick,发现还是被过滤了

尝试大小写绕过

payload:"Onclick="alert(1)

xss-7

查看源码

尝试"οnclick="alert(1),发现on被过滤

尝试双写绕过

payload:"oOnNclick="alert(1)

xss-8

查看源码

尝试伪协议javascript:alert(1)

查看页面源码发现对javascript也存在过滤

将r替换为实体编码进行绕过:r

Unicode编码转换 - 站长工具

payload:javasc&#114;ipt:alert(1)

xss-9

发现需要添加连接,跟第八关很像

链接不合法,需要加http://

发现c被过滤了,这里考虑替换为实体编码进行绕过

这里将c转换

payload : javas&#99;ript:alert('http://')

xss-10

查看源码

源码里面有三个参数,尝试给他们赋值

t_link=111&t_history=222&t_sort=333

给t_sort赋值"<script>alert(1)</script>"

发现'<','>'会被过滤,使用点击事件绕过

  原因是type类型是hidden,也就是被隐藏了

将type定义为button或者text,并且考虑闭合,将后面的hidden注释

 payload : t_sort="onclick="alert(1)" type="text//

xss-11

发现有一个ref后面还有xss-10的地址 

先探测一下

将xss-10的payload放入

发现“被过滤了,考虑到转码

 问题就在这个ref这里

 Referer作用 统计

       那Referer有什么作用呢,经过搜索查询可知,Referer在Http请求中主要用两个作用,主要是用作“统计”和“防盗链”。 ​   统计的意思就是当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,例如我使用谷歌打开百度网页,通过Referer看出数据来源是来自百度,因此百度可以通过这个Referer来统计流量

防盗链

       防盗链是服务器只允许网站访问自己的静态资源,那服务器每次都需要判断Referer的值是否是自己的域名,如果是就继续访问,不是就拦截。这个就好比小区业主可以进入自家的小区,非本小区的会被保安拦截不让进入是一样的道理。 ​   如果在防盗链设置中,Referer为空的话意味着你允许比如浏览器直接访问,不用被进行识别或者被拦截。

这里我使用hackbar,修改referer

接下来我们就可以尝试构造代码,从referer这里突破:

payload:" onclick="alert(1)" type="text

xss-12

查看源码

发现t_ua,值为浏览器和系统版本,然后大概确定这是用户代理

实际上,UA是一个浏览器被用来访问网站时发送给网站服务器的一串特定字符,其内容通常包含了“操作系统及版本”、“CPU 类型”、“浏览器及版本”、“浏览器渲染引擎”、“浏览器语言”、“浏览器插件”等信息。网站服务器可以根据这串字符大体判断出用户所使用的软硬件环境,进而采取不同的内容策略。

使用hackbar修改UA

payload:" onclick="alert(1)" type="button

xss-13

查看源代码,发现这次是cook,考虑到xss-11、xss-12,猜测cook为cookie

 继续使用hackbar修改cookie

查看源码发现cookie没写进去

使用burpsuilt抓包看看到底发生了什么

 通过抓包,我们可以看到,竟然多了一个参数user,原来cookie的值是通过user才传进去的。构造payload

payload:Cookie" onclick="alert(1)" type="text

重发器里修改参数

好像成功了,放包试一试

xss -14 

第14关才疏学浅,如果有大佬做出来让我去学习学习

点击下方直接去15关

xss-15

查看源代码

 发现这是文件包含

查看源码可以看到这里是通过src传参,而且还对<>做了过滤,既然这里可以包含html文件,那也就是说也可以包含之前咱们做过的有xss漏洞的文件,所以就可以构造:

payload:src='level1.php?name=<a href="javascript:alert(1)">'

xss-16

将xss-15的payload写入,查看源码

 过滤了script和 " 还有空格

这里使用onclick事件,并将空格转码%0A,%0D

尝试加个a标签,空格用回车编码代替

payload:<a%0D%0Aonclick='alert(1)'>

xss-17

查看源代码,发现emdeb 

这里尝试onclick,写入后发现这个没有弹窗

 点击后没什么反应,换成onmousedown事件,成功

payload:123 onmousedown='alert(1)'

xss-18

查看源码,试一试xss-17的payload

 

xss-19

看到GET请求方式传递参数,直接用测试代码进行测试,查看过滤

<script " ' Oonn>

 查看页面源码发现过滤尖括号<>和双引号",对大小写不敏感

检查页面元素,发现传递的参数以事件属性的格式写在标签<embed>中,考虑用支持的事件属性进行注入

 点击页面,将鼠标移至<embed>标签处,页面提示通关

 xss-20

 这一关我暂时还理解不了,大家可以参考一下大佬的文章,文章已经链接到下面了

xss-20

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/712948
推荐阅读
相关标签
  

闽ICP备14008679号