xss练习笔记

写篇博客主要记录一下xss的学习

此次使用的网站是:xss练习

进入网站首页后,点击图片便能开始xss的学习之旅了

Level-1

在这里插入图片描述
可以看到Level-1的界面,这一关的xss注入点比较明显,就是在url栏中参数:name
payload:

<script>alert(123)</script>

 
 

Level-2

在这里插入图片描述
来到第二关,界面中央的输入框似乎可以搞事情,先试一试上一关的payload看看能行不
payload:

<script>alert(123)</script>

在这里插入图片描述
很明显,这一关对我们的输入做了一些手脚,使得<script>标签并没有被解析到DOM树中(也就是说这个<script>标签并没有被浏览器认为是一个标签,而是当作普通的文本识别了)我们看一些这个网页的源码
在这里插入图片描述
既然 <> 被实体化了,那么在这里插入标签来构成xss便不太现实了(<> 被实体化后无论插入什么标签都不会被浏览器解析为标签的)不过观察这个网页的代码便会有意外收获
在这里插入图片描述
图中红色标注的value属性值,这里的值便是我们刚才的输入内容,我们可以从这里做手脚,从而构成xss
payload:

" οnclick="javascript:alert(123)

 
 

Level-3

在这里插入图片描述
还是先试一试上一关的payload看看这一关有什么变化

" οnclick="javascript:alert(123)

在这里插入图片描述
先去看看源码有什么变化
在这里插入图片描述
从源码可以看到,在这一关中 " 被实体化了,不过所幸,从源码里可以看到可以使用 ’ 来闭合,所以 " 被实体化也没有什么影响
payload:

' οnclick='javascript:alert(123)

 
 

Level-4

在这里插入图片描述
先去看看源码,看看回显可能在哪里
在这里插入图片描述
这里也可以直接使用 " 进行闭合,从而构成xss
payload:

" οnclick="javascript:alert(123)

 
 

Level-5

在这里插入图片描述
在这里插入图片描述
看起来与上一关并没有什么差别,先试试上一关的payload

" οnclick="javascript:alert(123)

在这里插入图片描述
使用上一关的payload并不能通过这一关,所以我们还是得去看看网页代码是将我们的输入变成了什么样子
在这里插入图片描述
很明显,这里将我们的对我们输入的 on 做了过滤,这样我们的便不能使用onclick等有 on 存在的函数来构成xss了,不过我们可以使用javascript伪协议来执行javascript代码,从而构成xss
payload:

"> <a href="javascript:alert(233)">ss</a>

 
 

Level-6

在这里插入图片描述
先试试上一关的payload

"> <a href="javascript:alert(233)">ss</a>

在这里插入图片描述
在这里插入图片描述
这一次过滤的更为严谨,将href也进行了过滤。不过,我们可以对被过滤字符进行大小写来尝试绕过过滤
payload:

"> <a HREF="javascript:alert(12)">12</a>

 
 

Level-7

在这里插入图片描述
依然是先尝试上一关的payload

"> <a HREF="javascript:alert(12)">12</a>

在这里插入图片描述
在这里插入图片描述
这一次就比较厉害了,我们查看网页代码发现我们输入的 href 和 script 都消失了,也就是说我们输入的 href 和 script 被后台替换为了null。不过,这种替换也有着一定的缺点
举个例子:先来看一个字符串 scripscriptt ,这个字符串中便含有 script ,我们将其替换为null,也就是相当于删去了 script ,经过我们的操作之后,这个字符串变成了 script ,看到这,这一关的payload也应该就比较明显了吧
payload:

"><a hrehreff="javasscriptcript:alert(23)">test</a>

 
 

Level-8

在这里插入图片描述
先来看看网页代码
在这里插入图片描述
可以看到有两处是回显我们的输入值,我们先构建一个payload尝试一下

"><a href="javascript:alert(23)">test</a>

在这里插入图片描述
由于 <> 被实体化,所以红色标注处并没有成功闭合从而构成xss。不过我们看到了第二个红色标注处,我们的输入是在href之中,所以我们可以依次为突破口再次构建一个payload进行尝试

javascript:alert(123)

在这里插入图片描述
图上可能看到不是很清楚,这里的 javascript 被后台处理而变成了 javascr_ipt,从而无法正常执行javascript伪协议,后面的javascript自然也就无法执行了。
不过若是对浏览器的编码解码有一定的了解的话,便会知道html解析器是最先进行工作的,并且html解析器还会解析“属性状态中的字符引用(实体编码)”,在html解析器工作完成之后一般才是url解析与javascript解析,由于html解析已经完成,所以若是对“属性状态值”进行html实体编码是不影响url与javascript的解析的,所以我们的payload自然也就有了眉目
payload:

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(123)

其中:&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74; 是字符串 javascript 的实体化编码
 
 

Level-9

在这里插入图片描述
在这里插入图片描述
只有输入内容中存在正常链接格式才会将其回显到图中红色标注处。但是这里有个点比较坑,这里并不识别以 https 作为开头的链接,只识别以 http 开头的链接,这点需要注意一下。除此之外,这一题与上一题的解法基本相同,现在的主要问题便是如何将javascript与正常链接放到一起并且还能使javascript代码能够正常执行,其实借助一下注释便能完美解决这个问题
payload:

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(123)//http://www.baidu.com

 
 

Level-10

在这里插入图片描述
没有看到什么明显的注入点,所以还是先看看网站代码能不能给我们提供些xss的思路
在这里插入图片描述
明显可以看到这里有三个隐藏的输入框,可以看到这三个输入框都有着各自的name属性,且form表单并没有规定method,所以使用的method为默认(GET),所以我们直接在url栏中进行传参来测试一下这三个input哪一个可以回显
构造的url为:test.ctf8.com/level10.php?t_link=test123&t_history=test456&t_sort=test789
在这里插入图片描述
可以看到,这里第三个输入框(name为t_sort)存在回显,于是我们便可以构建payload将其作为t_sort的参数值传入
payload:

" οnclick="javascript:alert(123)" type="text

 
 

Level-11

在这里插入图片描述
这题与前面风格突变,这题是Referer类型的xss(当时写这题时,人都要给我写没了,突然变成了Referer类型的xss,我当时根本没往这方面去想),知道是Referer类型的xss后,再来看一下这题的代码
在这里插入图片描述
抓包,将Referer值修改为payload便能通过这一关
payload:

" οnclick="javascript:alert(123)" type="text

 
 

Level-12

在这里插入图片描述
先看一下网页代码
在这里插入图片描述
如果经常抓包的话,应该能够看出来上图红色标注的input标签的value值是user-Agent类型的。与上一关的过关方法类似,这一关将user-Agent的值修改为payload即可过关
payload:

" οnclick="javascript:alert(123)" type="text

 
 

Level-13

在这里插入图片描述
Referer与user-Agent都来过了,这一关我当时便猜是关于cookie的,抓包与与网页代码相比对后便能发现确实是关于cookie的xss
在这里插入图片描述
抓包之后,修改上图红色标注的cookie中的user属性值为payload便能过关
payload:

"+οnclick="javascript:alert(123)"+type="text

 
 

Level-14

这一关我一进去网页就是一顿跳转,抓包也没有找到什么思路
 
 

Level-15

由于Level-14我没有做,所以这一关我只能按照前面的关卡路径规则猜测它的路径为:http://test.ctf8.com/level15.php
,虽然地址是对的,但是访问速度是真的太慢了
在这里插入图片描述
虽然能打开,但是这一题并没有突破,下图可以给大家提供一个可能的参数,各位若是有思路的话还请在下方评论区告知一下(万分感谢)
在这里插入图片描述
 
 

Level-16

由于15关没过,16关依然是猜路径:http://test.ctf8.com/level16.php?keyword=
在这里插入图片描述
在这里插入图片描述
这一关 <> 都没有被实体化,但是很遗憾的是除此之外的过滤都很严格,我尝试构造了各种标签都没有成功构成xss。这种时候只能靠运气了,去传几个url编码的值看看能不能正常回显,然后会发现能够正常回显,所以后台工作的大致思路应该是先对过滤字符进行操作之后,然后又进行了一次url解码,这时候payload的思路也就很明显了,通过对关键字符进行url编码来绕过过滤
payload:

<img%0asrc="123.png"%0aonerror="%6a%61%76%61%73%63%72%69%70%74:alert(123)">

 
 

剩下的几关我去访问的时候感觉有些不对劲,去百度了一下也发现现在访问的网站跟别人以前访问的确实变了,网站可能出现了一些问题,尝试了一次下别人的payload也发现并没有什么作用,所以在这里后面几关便不记录了

个人新建博客,欢迎访问

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值