XSS靶场(1-10)


  1. 第一关
  2. 第二关
  3. xss秘籍第三式(绕函弹)
  4. xss秘籍第四式(构绕函弹)
  5. xss秘籍第五关 (闭新java弹)
  6. xss秘籍第六关(大小写)
  7. xss秘籍第七关(重复写)
  8. xss秘籍第八关(DOM)
  9. xss秘籍第九关(代码审计)
  10. xss秘籍第十关(改类型)
  11. 总结

第一关

image.png
利用语句进行弹窗测试就可以
<script>alert(1)</script>
image.png

第二关

image.png

可以发现本题依然是根据GET传参数,查看源代码image.png
这是一个value进行输入,使用js恶意代码拼接

构造payload:"/><script>alert(2)</script>//
image.png

xss秘籍第三式(绕函弹)

根据流程来:
一、查看页面,任然是GET型,都是GET型哪有什么区别呢,查看源代码查看
image.pngimage.png
仍然是value输入,但是这次是空的值,仍然进行js恶意代码输入

image.png

没有弹窗,构造payload,还是没有反应
"/><img src=# onerror=alert(1)/>//

image.png

为什么都用不了!!!
大概是后端使用了**htmlspecialchars**函数进行过滤,因此我们可以使用不带有尖括号的特殊字符进行尝试:
' onmouseover='javascript:alert(1)

image.png

至于为什么要使用'这是因为
<input type='text' value=' &#039 onmouseover=&#039 javascript:alert(1)'>
只有使用单引号,转换出来的&#039才有意义

xss秘籍第四式(构绕函弹)

image.png

这是我们再拿第三关的payload进行尝试我们发现已经没有任何作用
image.png

老样子查看一下源代码,我也没有发现什么。。。。看一下大佬们的解释
image.png

让我们跟着思路走下去
构造payload:1、

 2、 "onmouseover='alert(1)' 

image.png

这不就可以了嘛

xss秘籍第五关 (闭新java弹)

image.png

是不是跟第四关差不多嘞,但是这可是第五关呐!!!啊这,肯定比第四关更难吧
问题不大,让我们先用第四关的方法进行尝试
image.png

可以发现,这里闭合了on,尝试大小写绕过
image.png
还是仍然对on产生了绕过,尝试编码
image.png
发现编码也不行……….

既然都不行,就回到最处思考使用<>操作
构造payload:"/><a href="javascript:alert(1)"/>

image.png

似乎什么也没有,又似乎发现了什么!!
似乎发现了被单独弥留下来的一个超链接版的xss代码,我们点击进行尝试,很不错,这个链接尽然弹出了xss代码

image.png
image.png

xss秘籍第六关(大小写)

还是先使用上一关的payload
image.png

查看一下源代码image.png

可见是过滤了href,在这里使用的是大小写进行过滤:
" /> <a Href="javascript:alert(1)"/>
image.png

完成了
image.png

xss秘籍第七关(重复写)

老方法,上一关payload进行尝试
image.png

value什么也没有输出,可见是被过滤了,我们换个关键词试试
"/><img src='javascript:alert(1)'>//

image.png

这应该是对关键词进行了过滤操作,也就不能使用SRC、herf等一些关键词出发xss的恶意js,是否可以使用不用到这些都标签构造payload。。
But….连script标签也被过滤的,这就让人很头大!!

那么现在需要考虑如何进行script绕过,就是我们需要解决的事情了,先尝试大小写
"/><Script>alert(xss)</Script>//<
image.png

可见还是被过滤了
没关系,绕过的方式很多,再尝试重复进行尝试
"/><ScrscriptipT>alert("xss")</ScriscriptPT>//<
image.png

哦豁,小心机

xss秘籍第八关(DOM)

image.png

要添加友情链接,这一关很可能属于DOM型xss,因此需要根据友情链接进行恶意js构造
这样我们又回到了第五关了:javascript:alert(1)
image.png一个小知识点
image.png

javascript被过滤了,尝试绕过老样子:大小写、重复
image.png

都不行,怎么呢,也不能替换,小问题
还可以对关键词进行编码,在这里我们使用16进制进行编码,至于其他编码方式也是可以的
javascrip&#x74:alert(1)
image.png

这不就好了

xss秘籍第九关(代码审计)

image.png

到了这一关就不仅仅是对源代码进行分析了,找到文件的php代码进行审计
image.png

尝试进行弹窗"/><a href='javascript:alert(1)'/>

查看源文件并没有发现什么,这一关不知道为什么好卡!!应该是出了什么问题,去看一下大佬们的笔记
发现这是一个对https://字符的操作,不能出现https字样,只能是**http:// ** 这几个字符,不然就会返回链接不合法

因此构造payload时只需要出现http:// 的字样,并且在尝试过程中,对script进行了过滤,所以我么根据上一关的经验去构造
javascrip&#x74:alert(1)//http://www.san.com

image.png

这样就成功了,至于后面的链接,随意根据格式写就可以

xss秘籍第十关(改类型)

image.png

可能有隐藏的表单,尝试提交t_link、t_history、t_sort变量,t_sort变量返回在了html的value中,但是过滤了尖括号
也就是存在get参数又隐藏框,经尝试t_sort存在
image.png
而剩下的两个参数则不存在
image.png
type是为了让页面展现出一个输入框,一点击就会弹出alert
构造payload:123&t_sort="type="text" onclick="alert(1)(输入的文本都无法显示,这里只能改变一下keyword的类型,type=text)
image.png

今天就到这里了

总结

下面两个链接是发现的一些绕过姿势
绕过总结
绕过总结

page PV:  ・  site PV:  ・  site UV: