XSS之靶场实战

  • Post author:
  • Post category:其他




使用的靶场云演



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)

在这里插入图片描述



使用的工具

火狐浏览器


云演靶场



版权声明:本文为qq_62803993原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。