什么是XSS攻击?
XSS攻击是指网页开发时留下的漏洞,通过一些方法注入恶意指令到网页,使用户加载并使用恶意制造的网页程序
XSS的分类
-
反射型XSS
(非持久型),攻击者需要诱导用户点击链接,XSS代码出现在URL中,然后服务器进行解析,解析后XSS代码才会攻击(只经过服务器,不经过数据库) -
存贮型XSS
(持久型),XSS代码发送到服务器,数据库,文件系统,然后在下次页面请求的时候无需带上XSS代码(经过服务器,存入数据库)危害最大 -
DOM型XSS
修改页面DOM节点形成的XSS,无需浏览器解析,只需要客户端就行
level 1
首先我们点击图片
我们看提出的要求:payload的长度为4
首先,我们查看一下网页源代码,我们可以发现,通过GET传参,但是下面的str直接传入没有进行过滤
点击F12,使用hackbar,我们将使用一个简单的XSS语句将test替换掉
使用XSS辅助的工具:
点击后直接出现http://127.0.0.1/XSS/level1.php?name=<script>alert(1)</script>
我们直接执行
level 1通过
level 2
点击确定,我们来到了第二关
可以看出,第二关使用的是POST传参
首先,我们和上一关一样,将test删去,然后将XSS辅助代码放进去执行,我们可以发现,依旧执行失败
所以接下来我们查看一下网页源代码,我们可以发现,在这个地方,有一个转译符号
但是在下面传值运算时并没有进行转译
- 方法一:
所以,为了激发XSS,且我们观察到value后面有一个双引号,所以我们就直接进行双引号闭合所以我们应该直接在keyword=后加上"尝试一下执行
明显的,没有编译成功
其实原因就出在了有一个>没有闭合,我们要注意这个细节
下面就是添加这个> 即http://127.0.0.1/XSS/level2.php?keyword="><script>alert(1)</script>
编译成功
我们找出level 2的源代码进行查看,我们可以看出,level2和level1一样都是使用GET方法传参,但是,在level2中,使用了一个html的函数
htmlspecialchars()函数的用法
功能:将预定义字符转化为HTML实体
-
将&变为&
-
将"变为"
-
将 '变为 ’ (没变)
-
将<变为<
-
将>变为>
-
方法二:
使用鼠标划过输入框,输入