| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> xss-labs靶场实战全通关详细过程(xss靶场详解) -> 正文阅读 |
|
[网络协议]xss-labs靶场实战全通关详细过程(xss靶场详解) |
目录 ?啥都不懂的童鞋,可参考文章
xss-labs下载地址GitHub - do0dl3/xss-labs: xss 跨站漏洞平台https://github.com/do0dl3/xss-labsGGitHub - do0dl3/xss-labs: xss 跨站漏洞平台 level 1查看网站源码,可以发现get传参name的值test插入了html里头,还回显了payload的长度 直接上payload,插入一段js代码,get传参
当然也能传其他的东西过掉第一关,建议参考XSS常见的触发标签? 我们在看一下这关的源码 没有啥过滤的,很普通,单纯插入即可 本关小结:?JS弹窗函数alert() level 2查看网站源码? 第一个test可以跟上次一样直接插入js即可,我们先试试看
没成功,看一下源码 第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉双引号即可,构造payload
再看一下源码 果然进行了html实体转化? 本关小结:闭合绕过? level 3先输入123456,然后查看网站源码 相对于上一关,这里是单引号闭合,试一下看看
没想到符号也被实体化了,我们看一下源码 果然被实体化了,但是htmlspecialchars函数只针对<>大于小于号进行html实体化,我们还可以利用其他方法进行xss注入,这里我们可以利用onfocus事件绕过
所以我们可以利用这个事件来绕过<>号的过滤已达到执行js的目的,构造payload
然后再点击输入框触发onfocus事件即可 本关小结?:onfocus可以绕过html实体化(即<>号的过滤) level 4查看一下网站源码 这里是双引号闭合,<input>标签,所以我们还能继续利用onfocus事件,构建payload
看一下这关的源码 这里只是把<>号给删掉了,没多做过滤 本关小结:无? level 5这关感觉常规的方法过不去,我们先试试看
果然,这里on被替换成了o_n,先看一下这关的源码 过滤了js的标签还有onfocus事件,虽然str_replace不区分大小写,但是有小写字母转化函数,所以就不能用大小写法来绕过过滤了,只能新找一个方法进行xss注入,这里我们用a href标签法,
添加一个标签得闭合前面的标签,构建payload
之后点击xxx,触发a标签href属性即可 本关小结:可以插入标签(如<a>标签的href属性)达到js执行的效果,前提是闭合号<"">没失效 level 6这感觉很悬,不知道过滤了啥,输入关键字测试看看
过滤了好多,看看大小写能不能绕过
发现大小写没有被过滤掉,这题能利用大小写进行绕过,所以我们可以用下面的方法,构造payload
完事查看一下这关的源码 这关甚至还过滤掉了data,但是没有添加小写转化函数?,导致能用大写绕过? 本关小结:大小写法绕过str_replace()函数? level 7老规矩了,先上关键字试试看
传进去的值,经过转化后变成了
不难发现,这里面进行了小写转化,将检测出来的on,script,href给删掉了,但是没有关系,我们可以利用双拼写来绕过,
所以这关主要是双拼写绕过,方法有很多,这里我们用href属性标签,构造play
完事我们看一下这关的源码 这关甚至还过滤掉了src和data,受不了了,居然还有我不知道的解法,我们百度找找看其他解法
第二关没啥过滤只有一个html实体转义,我们回到第二关测试一下? 先试一下src,这里配合onerror属性,插入一个<img>标签,闭合掉双引号跟括号,构造payload
当然img标签还有其他姿势 ①当鼠标移出图片的时候执行的属性onmouseout?
②当鼠标移动到图片的时候执行的属性onmouseover
再来看看data的,这里利用iframe标签,插入一个标签data:text/html;base64, 将后面的内容进行base64解码,PHNjcmlwdD5hbGVydCgpPC9zY3JpcHQ+进行base64解码后是<script>alert()</script>
虽然有弹窗,但是没有过关?,好了,下一关 本关小结:双拼写绕过删除函数,标签插入新姿势,<img>标签与<iframe>标签插入? level 8先输入123看看啥玩意 输入的值插入了两个地方,第一个是input标签,第二个是href属性,老方法,先看看过滤了啥关键字
可以发现,input标签添加了html实体转化函数还把双引号也给实体化了,?添加了小写转化函数,还有过滤掉了src、data、onfocus、href、script、"(双引号),难搞哦,看一下这关的源码 果然,但是我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议
利用在线工具进行Unicode编码后得到,在线Unicode编码解码
接着我们插入href里面 点击友情链接 本关小结: href属性自动解析Unicode编码 level 9老套路,看看过滤了啥子
emmm,小老弟怎么回事,没插入成功??? 看一下这关的源码 里呢,当false等于false的时候(就是传入的值没有http://)就会执行if,为了防止false===false,我们需要向传入的值里面添加http://并用注释符注释掉否则会执行不了无法弹窗,让函数strpos返回一个数字,构造payload
本关小结:插入指定内容(本关是http://)绕过检测,再将指定内容用注释符注释掉即可? level 10?这里可以看到,Get传参的值,只插入了h2标签里头,额那下面的input标签啥东西,还隐藏掉了 ? 不管那么多,老规矩,先测试一下关键字
居然都被实体化了,没法子,只能看一下这关的源码了 好吧,原来还有其他隐藏的传参方法,学到了,下次就一个个测,这里是get传参t_sort,并过滤掉了<>号,不能闭合插入标签,但是我们还能用onfocus事件,因为这里输入框被隐藏了,需要添加type="text",构造payload
本关小结:根据源码猜解传参的参数名,隐藏的input标签可以插入type="text"显示? level 11<input>标签有四个值,都做了隐藏处理,不难看出,第四个名为t_ref的<input>标签是http头referer的参数(就是由啥地址转跳到这里的,http头的referer会记录有),我们先做个简单的测试来验证一下前面三个标签名,GET与POST传参都试一下看看 GET传参:
没赋值成功,再试试看POST传参:
POST传参也不得,那应该就referer头了,用burpsuite抓包一下,添加http头
再查看一下源码? 对比发现,把大于小于号><给删掉了,但是我们还能用onfocus,构造一个http头
之后我们再看一下这关的源码 跟猜想的一样,这题还有GET传参的,但是有实体化函数在双引号就闭合不了了? ?本关小结:考虑一下http头传值,本关是referer,但接下来也有可能是其他头,如Cookie等 level 12这肯定是User-Agent头了,再用burpsuite抓包一下,将User-Agent头修改为我们的测试代码
再查看一下源码 跟上题一样,构造UA头
再看一下这关的源码 跟上一关就一个http头的区别? ?本关小结:跟上题一样,考虑一下http头传值 level 13名字是t_cook,考虑到是cookie头,我们先看一下这个网页的cookie,F12打开 果然是,cookie名为user,我们直接在这里改一下就好,onfocus用腻了,换成onclick,用法也差不多,改为
?再刷新一下,点击框框就好了 再看一下这关的源码 一样,就一个头的区别 ?本关小结:还是http头传参 level 14这关没啥交互,只是会定时转跳到一个奇怪的已经挂掉了的网站,直接看一下后端源码吧 emmm,跟网站源码一样,这题本来是利用转跳到的网站,在那网站去上传一个,属性里面含有xss代码的图片,以达到弹窗的效果,具体可参考xss-labs靶场-第十四关 由于网站挂了,这里就不能演示 level 15?可以看到这儿有个陌生的东西ng-include
我们先试试看包涵第一关,构建payload
所以可以随便包涵之前的一关并对其传参,以达到弹窗的效果,先测试一下过滤了啥,构造payload
?对比发现,这里有个html实体化函数在,没有删掉东西,所以不影响我们接下来的操作,我们可以包涵第一关并让第一关弹窗(注意,这里不能包涵那些直接弹窗的东西如<script>,但是可以包涵那些标签的东西比如<a>、<input>、<img>、<p>标签等等,这些标签是能需要我们手动点击弹窗的),这里我们使用img标签,可参考XSS常见的触发标签,构造payload
当鼠标移动到图片的时候就触发了弹窗 当然也能用p标签,可以构造payload
点击哈哈哈即可弹窗,接下来我们看一下这关的后端源码 实体化函数,形同虚设 ?本关小结:ng-include文件包涵,可以无视html实体化 level 16test插入到了center标签中,所以这里就不用闭合了,老规矩,先测试一波关键字
对比发现,这里先是将字母小写化了,再把script替换成空格,最后将空格给实体化,想尝试一下p标签<p οnmοusedοwn=alert()>abc</p>,谁知道也将/给替换成了空格,无奈,只好看一下后端源码 果然给过掉了,空格可以用回车来代替绕过,回车的url编码是%0a,再配合上不用/的<img>、<details>、<svg>等标签,更多标签可参考XSS常见的触发标签 随便选个标签,将空格替换成回车的url编码,构造payload
?本关小结:回车代替空格绕过检测 level 17先测测关键字吧
对比发现,虽然加了该死的html转义,但是这里不需要闭合符号,传入的参数都出现在了embed标签上,打开后缀名为swf的文件(FLASH插件的文件,现在很多浏览器都不支持FLASH插件了)
所以,这题的解法很简单,首先得用一个支持flash插件的浏览器打开本关(打开后会有个图片出来的,不支持flash插件浏览器就没有),如果不想下载的话,自己去后端改一下也行,将后端第十七关的代码(level17.php)指向的swf文件改为index.png 改为: 这样我们再去打开第十七关的网站 就有个embed标签的区域在啦,其实用不用swf文件都一样的,主要是区域,接着我们构造payload
点击一下区域就弹窗成功了? ?本关小结:emm,貌似就是熟悉一下触发事件(如onclick、onmouseover)的使用 level 18这次不改后端代码了,换个支持flash插件的浏览器,Cent Browser。 先看一下源码 源码跟上关差别不大,就是换了个swf文件,我们直接测试一波过滤了啥,构建payload
emmm,也是只搞了个html实体化函数,也没过滤啥,感觉跟上关一样,用事件触发属性即可(如onmouse系列、onfocus、onclick等)直接上payload
再点一下embed标签区域 看一下后端源码 就这点过滤。。。。 level 19网页源码差不多,也就是只有swf文件不同的差别,直接上payload
emmm,大意了,还有实体化函数在无法闭合,那就利用其他的,看了一下大佬的wp
其实就是往Flash里面插入一段js代码,然后手动执行嘛,构造payload?
至于为啥arg01得传version,那就得去swf反编译才能知道了 ?本关小结:Flash xss了解一下就行,现在许多浏览器都用不上flash插件了 level 20这关也是有双引号,呜呜呜,不想反编译,直接参考大佬的文章 直接构建payload,
终于通关了!!!太不容易啦 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:45:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |