前言

写这篇博文起源来自于一次网络安全实验课,在实验虚拟环境里有一个xss挑战,估计是搬别人的xss挑战进来,我觉得挺有意思,就记录一下。有些关卡不能再虚拟环境实践,我在自己物理机上找到那个xss挑战平台进行实现。

level1

未进行过滤,直接输入payload

payload:

level2

发现对html特殊符号进行了实体编码,

payload:" οnclick=alert(/xss/)><"

当然需要点击一下触发

level3

编码了双引号,但是源码里用的单引号,用单引号构造即可

payload:'οnclick=alert(/xss/)><'

level4

过滤了<>符号,我们只能用事件绕过,这里利用浏览器的容错特性,不闭合直接注释也能执行

payload:" οnclick=alert(/xss/)//

level5

有两处输出的地方,第一处对特殊符号进行了实体编码,第二处将on开头的事件全部替换加下斜杠,也将

payload:">xss

点击xss

level6

这里紧接就过滤了href标签,但是却没有做小写处理,可以用大写绕过匹配

payload:">xss

或者:">

level7

做了小写处理,将script和href,src,on等字符串替换为空字符

猜测只替换了一次,我们可以用双写绕过

payload:

">alert(/xss/)

">xss

">

" oonnclick=alert(/xss/)>

level8

做了小写处理,将script和href,src,on等字符串加上下斜杠,使其无法正常解析,还将双引号实体编码,是我们不能闭合双引号

这里是一个a标签,用href构造一个链接

想到可以调用外部js,但事实并没那么简单,因为完成目标需要在本页面弹窗,才会显示输出,并跳转到下一关

因为这里是先添加一个链接,再打开这个链接,会打开另一个界面,就不在本界面弹窗,所以外部调用不可行

只能用伪协议javascript:alert(/xss/),但script会被替换

那我们只有尝试编码绕过了

用实体编码可绕过

payload:

十进制实体编码:javascript:alert(/xss/)

十六进制实体编码:javascript:alert(/xss/)

都是将t字符进行实体编码,当然对其他字符进行编码也可以,目的在于绕过服务端的匹配。客户端解析时又会将其转码为t,从而弹窗

level9

href里直接显示链接不合法,测试发现输入中必须包含http

那我们用注释符绕过即可,构造payload

payload:javascript:alert(/xss/)//http://192.168.1.3

或者javascript:alert(/xss/)//http://192.168.1.3

level10

这里发现输出的地方进行了html实体编码,一时间没找到突破口

查看源码才发现,t_sort变量的键值也是可定义的,过滤了<>符号,没有编码双引号,这里告诉我们要多测试一些变量

paylaod:

" type="text" οnclick=alert(/xss/)" #因为页面中没有触发事件框,所以type="text"构造一个文本框

level11

查看源码发现多了一个键值t_ref,内容一看,不是上一题的url吗?猜测这是获取的http头里的referer字段

伪造referer字段即可

这里由于实战环境在虚拟环境内,且无网,没有burpsuite工具,不方便操作

只给出payload

referer: " type="text" οnclick=alert(/xss/)"

level12

查看源码多了键值t_ua,应该是浏览器的User-Agent

同样用burpsuite伪造UA发包即可

paylaod:

User-Agent: " type="text" οnclick=alert(/xss/)"

level13

查看源码多了键值t_cook,应该是cookie

同样用burpsuite伪造cookie发包即可

payload:

Cookie: " type="text" οnclick=alert(/xss/)"

level14

查看源码发现exif,猜测应该是exif xss,但是这个链接由于网络的原因无法访问,所以,也无法实践

exif xss,一般利用于文件上传的地方,最经典的就是头像上传,上传一个图片,该图片的exif元数据被修改为xss payload,成功利用弹窗

具体实现使用kali下的exiftool工具

命令如下:

exiftool -FIELD=XSS FILE

exiftool -Artist=’ “>’ brute.jpeg

level15

什么?让我自己走出去。这里看来只能在url里面操作

发现src参数,查看源码发现把参数拼接到了最后一行输出,那这里应该是突破口了

这里估计使用ng-include,这个属性可以包含文件,默认是同域名的文件

那我们包含level1.php加上参数即可

payload:level15.php?src='level1.php?name='

因为这里要访问上面的angular.min.js这个js文件,才能进行包含,虚拟环境里面无法访问那个js,因为需要fanqiang才能访问,根本没法实现,所以我找了外网的一样的xss挑战进行测试

成功包含level1弹窗

level16

这一关过滤了空格,还有script字符串,也替换成空格,编码为

这里我们可以使用换行符%0a(换行)或者%0d(回车)绕过

paylaod:

或者

level17

查看源码,发现swf文件

百度了一下,以为是flash xss,但是始终利用不成功,结果好像不需要这样利用

直接把arg02赋值为

οnclick=alert(1) #注意最前面有一个空格

查看源码发现自动补全了引号,我也不懂为啥

level18

与上一关一样的payload

level19

这一关没有自动添加双引号,自己写入的双引号也被编码。无法闭合,好像只有根据flash xss来构造payload,

level20

与上一关相似,待考究

总结

xss绕过方法

大小写绕过

双写绕过

alert(1)

替换绕过

过滤 alert 用prompt,confirm,top['alert'](1)代替绕过

过滤() 用``代替绕过

过滤空格 用%0a(换行符),%0d(回车符),/**/代替绕过

小写转大写情况下 字符ſ大写后为S(ſ不等于s)

%00截断绕过

xss

编码绕过

实体编码

javascript:alert(1) 十六进制

javascript:alert(1) 十进制

unicode编码

javascripu0074:alert(1)

url编码

javascrip%74:alert(1)

fromCharCode方法绕过

String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41, 59)

eval(FromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))

javascript伪协议绕过

无法闭合双引号的情况下,就无法使用onclick等事件,只能伪协议绕过,或者调用外部js

换行绕过正则匹配

onmousedown

=alert(1)

注释符

// 单行注释

注释多行内容

注释多行内容

注释多行内容

--> 单行注释后面内容

/* */ 多行注释

有时还可以利用浏览器的容错性,不需要注释

闭合标签空格绕过

@符号绕过url限制

例如:https://www.segmentfault.com@xss.haozi.me/j.js

其实访问的是@后面的内容

")逃逸函数后接分号

例:");alert(1)//

绕过转义限制

例:

")

alert(1) //

xss paylaod形式

xss

xss

alert(1)">

xss绕过字符过滤_XSS绕过实战练习相关推荐

  1. xss绕过字符过滤_xss绕过过滤之方法

    很多网站为了避免XSS的攻击,对用户的输入都采取了过滤,最常见的就是对<>转换成<以及>,经过转换以后<>虽然可在正确显示在页面上,但是已经不能构成代码语句了.这个 ...

  2. xss绕过字符过滤_XSS过滤器绕过总结

    XSS过滤器绕过总结 黑名单过滤器绕过 黑名单模式下的过滤器是最常见的.他们的目标是检测特定模式并防止恶意行为.这完全是"模式"的问题,它们越准确,就越可以拦截攻击. 1. 注入脚 ...

  3. XSS短字符短域名绕过,XSS相关的知识

    XSS短字符域名绕过 先在phpstudy上搭建一个gamerycms的一个平台,文件可以在github上获得:https://github.com/bensonarts/GalleryCMS 搭建完 ...

  4. xss绕过字符过滤_IE8 xss filter bypass (xss过滤器绕过)

    简要描述: IE 8 XSS 过滤器绕过.感谢@Sogili牛为本绕过通用性实现上提供的tricks. 详细说明: 1. 在IE8中,可以通过 <?import> + 的方式来构成一个XS ...

  5. 复现20字符短域名绕过以及xss相关知识点

    xss xss攻击 xss指黑客通过特殊的手段往网页中插入了恶意的 JavaScript 脚本,从而在用户浏览网页时,对用户浏览器发起 Cookie 资料窃取.会话劫持.钓鱼欺骗等各攻击. xss攻击 ...

  6. XSS注入原理以及一些绕过姿势

    介绍 XSS--跨站脚本攻击.通过这个攻击手段,攻击者可以将恶意的 JavaScript 代码插入存在 XSS 漏洞的 Web 页面中,当用户浏览带有恶意代码的页面时,这些恶意代码会被触发,从而达到攻 ...

  7. 关于SQL注入,绕过逗号过滤

    关于SQL注入,绕过逗号过滤 前言 题目 测试 解题 1.union联合注入 2.盲注 总结 前言 最近在i春秋遇到一道sqli题目,觉得很有意思,总结一下与大家分享. "百度杯" ...

  8. nginx防护规则,拦截非法字符,防止SQL注入、防XSS,nginx过滤url访问,屏蔽垃圾蜘蛛,WordPress安全代码篇

    nginx防护规则,拦截非法字符,防止SQL注入.防XSS,nginx过滤url访问,屏蔽垃圾蜘蛛,WordPress安全代码篇 精心强化,小白一键复制 资源宝分享:www.httple.net 宝塔 ...

  9. SQL注入绕过关键词过滤的小技巧及原理(union select为例)

            本文以联合查询关键字union select为例讲解绕过关键词过滤的一些方法.之所以了解绕过,关键是发现sqlmap有时候真的是不靠谱,只能指定命令跑.有一些简单过滤很容易绕过却不能检 ...

最新文章

  1. SAP PI 适配器引擎
  2. 微软发布新的Azure Pipelines功能和集成
  3. c语言错误c4430,C 语言 typedef 与 #define 比较
  4. Scala学习之映射(Map)
  5. Vue组件通信的7个方法
  6. 一些设计思想的汇集(2)
  7. php基本操作-echo
  8. 基于JAVA+SpringMVC+MYSQL的医院分诊挂号管理系统
  9. audio realtek 耳机没声_解决HD Audio 声卡前面板耳机无声音的方法
  10. Tibco Designer -- 循环遍历
  11. 由浅入深:自己动手开发模板引擎——解释型模板引擎(一)
  12. [PED01]Deep Subspace Clustering Networks
  13. Python编程中的常见语句
  14. 奇怪的报错(uncaught typeerror illegal invocation)
  15. 75岁老人用excel表格画画,令人叹服!
  16. macmini 387 2k显示器尝试hidpi
  17. lzma和lz4的速度比较
  18. CSS实现图片文字排版02
  19. JAVA_面向对象2
  20. 飞飞cms添加广告html,飞飞cms影视系统 安装说明飞飞影视系统 建站流程

热门文章

  1. [**收藏**] Warcraft 小游戏 -- Tower Defense(1) -- Flash Element TD
  2. vscode编辑器 装JavaScript Standard Style 遇到不检测代码问题
  3. checkbox全选和反选功能
  4. LeetCode--35. 搜索插入位置(遍历,二分法)
  5. 动手学深度学习(PyTorch实现)(九)--VGGNet模型
  6. OpenCV3学习(8.2)直方图相似度比较compareHist函数与EMD距离
  7. java地球_java – 应用地球纹理地图的球体
  8. PTA c语言 选择法排序过程
  9. .net面试题(会持续更新)
  10. C# 8.0 预览特性