Pikachu XSS关卡详解
Background
pakachu这个靶场可以做很多web题目 在这里着重帮助大家解决xss项目
环境
系统:Windows11
本地服务器:PHPstudy2018
靶场:pikachu
1.反射型xss(get)
在这里随便输入脚本进行尝试
<script>alert("xss")</script>
这个时候发现输入到一般不能继续输入,就可以想到是前端限制了输入字数
F12对字数限制进行修改
双击20修改成更大的数字 这个时候就可以完成注入
2.反射型xss(post)
这一关与上一关相同 不过需要先登录 admin 123456
<script>alert("xss")</script>
3.存储型xss
PS:存储型一般出现在留言板 存储在数据库中 然后只要人看到就会开始作用
此关仍然没有过滤
<script>alert("xss")</script>
4.DOM型xss
随便输入语句可以看到内容出现了元素中 我们可以通过构造使之闭合成为新标签或者添加新元素完成xss攻击
payload:
javascript:alert("xss")
然后点击出现的链接即可
5.DOM型xss
payload与上一关相同,不过有两次寻找链接元素找到可以插入
6.xss盲打
盲打只是一种惯称的说法,就是不知道后台不知道有没有xss存在的情况下,不顾一切的输入xss代码在留言啊,feedback啊之类的地方,尽可能多的尝试xss的语句与语句的存在方式,就叫盲打。
“xss盲打”是指在攻击者对数据提交后展现的后台未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。当未知后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的“真实攻击功能”。
通俗讲就是见到输入框就输入提前准备的xss代码, 通常是使用script标签引入远程的js代码,当有后台人员审核提交数据时候,点击了提交的数据,触发获取到有价值信息 。
输入:
发现没有任何反应 这就是盲打 我们登录后台看看就会中招
7.xss过滤
这一关明确写着有过滤,于是正常的xss就无法完成攻击 绕过过滤的方法有几个
- 大小写绕过
- 双写绕过
- js编码#unicode js的一种编码方式
- html实体编码
- url编码
这里采用大小写绕过
payload:
<sCript>alert("xss")</sCript>
或者:<img src=x onerror="alert('img标签')">
8.xss之htmlspecialchars
htmlspecialchars()函数默认只编码双引号,当开发者未对单引号过滤时,就会可能导致XSS的发生
javascript:alert(/xss/)
或者闭合href 添加新属性
' onclick='alert("xss")'
9.xss之href输出
这一关可以使用上一关的第一个payload 不能使用第二个
因为引号等被编码了
10.xss之js输出
这里讲输入动态的生成到了js中,形成xss
javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义
构造闭合,把原本的<script>
闭合掉,再插入我们自己的<script>
输入:xss'</script><script>alert("xss")</script>
payload:
xss'</script><script>alert("xss")</script>