一、环境配置
1.pikachu官网下载
下载地址:https://github.com/zhuifengshaonianhanlu/pikachu
2.百度网盘(里面含有pikachu跟phpstudy)
链接:pikachu下载
密码:abcd
配置:pikachu下载及安装-图文详解+phpStudy配置-CSDN博客
二、XSS漏洞测试
1.反射型xss(get)
开始提示哪个是你最喜欢的nba球员,我们先点击提交试试
输入kobe之后,我们可以发现url中的message从没有变成了kobe,利用此参数进行xss注入js代码
<script>alert(1)</script> #最基本的js攻击代码
当你尝试利用在框里写上以上代码时,发现对长度进行了限制,我们可以在前端修改限制的长度,从而进行攻击 。如果你在url中攻击就没有这样的烦恼
以下图片是在前端中进行修改长度来进行攻击
2.反射型xss(post)
当我们输入正确密码登录进去后,发现url出现了post反映的.php文件,GET和POST的区别是GET是以url方式提交数据而POST是以表单方式在请求体里面提交即在上一个实验中,可以通过URL来改变参数利用xss漏洞,而在这个实验中不可以。
<script>alert(1)</script>
3.存储型xss
进入此关卡,发现了一个留言板,尝试用基本的js代码攻击
注意:与前两个关卡不同(反射型xss攻击是一次性的),而存储型xss攻击是持久的,它是将攻击代码存储到数据库中,当被攻击的用户每次打开这个留言板界面,都会出现回显
<script>alert('xss')</script>
4.DOM型xss
DOM概念:DOM文档就是一份XML文档,当有了DOM标准之后,DOM便将前端html代码化为一个树状结构,方便程序和脚本能够轻松的动态访问和更新这个树状结构的内容、结构以及样式,且不需要经过服务端,所以DOM型xss在js前端自己就可以完成数据的输入输出,不与服务器产生交互,这样来说DOM型xss也可以理解为反射性xss,但是反射型xss需要与服务器交互,这就是二者的区别。
打开前端代码,看到我们攻击的代码被注释掉了,此时我们需要尝试绕过
点击提交按钮时会触发onclick事件,执行domxss()函数,通过document.getElementById()函数获取输入框内内容显示到页面
只要将 < a href="' "> < /a >标签造成闭合即可通关,我们输入
#' οnclick="alert('xss')">
5.xss盲打
随便输入什么,提示谢谢参与,阁下的看法我们已经收到,说明我们输入的内容像是被提交给了后台, 我们接着尝试输入语句
<script>alert('xss')</script>
点击提交,查看提示,进入xss后台,
后台登录地址是/xssblind/admin_login.php #在url上进行修改即可,登录成功就会回显
6.xss之过滤
xss绕过-过滤
1.前端限制绕过,直接抓包重放,或者修改html前端代码
2.大小写,标签,双写,编码,拼凑
先尝试基本的攻击语句,发现没有什么反应,出现了过滤
<script>alert('xss')</script>
我们查看源代码,发现对<script>进行了过滤
我们尝试用大小混写的方式绕过
<ScRipT>alert('xss')</ScRipT>
7.xss之htmlspecialchars
将上一关过关代码尝试攻击,猜测<>被htmlspecialchars函数转义了
htmlspecialchars()函数把预定义的字符转换为HTML 实体。
预定义的字符是: &(和号)成为& ”(双引号)成为"
'(单引号)成为' ‘’< ‘’(小于)成为< ‘’> ‘’(大于)成为 >
尝试输入特殊符号,''""<>123,看看过滤,发现除了',其他全被过滤了
此时,我们构造'闭合语句,之后点击蓝色字体,出发鼠标点击事件
' οnclick='alert(123)'
8.xss之href输出
尝试代码过滤内容,发现我们输入的内容在a标签中的href中,可以使用javascript协议来执行js
javascript:alert(123)
输入完成后,点击下方蓝字
9.xss之js输出
尝试看看有没有过滤,查看网页源代码,翻到底下,发现并没有过滤,尝试用'闭合
这里用'闭合$ms,用</script>闭合上面的<script>
'</script><script>alert('123')</script>