pikachu平台练习(XSS模块)
XSS简介
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射型XSS;
2.存储型XSS;
3.DOM型XSS;
1.反射型xss(get传参)
打开pikachu对应的这一关,我们发现只有一个输入框,我们随便输入一些字符 ' " <> 等看看是否存在转义,
回显结果显示,对我们输入的字符全部正确的回显了出来,可以确定的确存在xss漏洞,然后我们查看一下页面源码,Ctrl+f 查找一下我们刚才输入的部分,确实是全部返回,然后研究代码发现存在字符限制,然后我们用开发者工具将前台代码输入长度改变,方便我们利用。
由于输入框限制了输入长度,我们通过查看器找到代码将值改大方便我们利用。
然后我们在输入框中随便输入js代码就可以执行了,例如我输入的<script>alert('xss')</script> 提交后就正常回显了。说明我们的js代码在里面成功执行。
然后我们将url复制下来,再次打开一个新的页面再次粘贴进去,发现再次弹出alert框。可以看出是从url提交的信息。这样的话攻击者可以通过传播url来实现对网站的恶意攻击了。
2.存储型XSS
我们打开存储型XSS这一页发现是一个留言板,我们先随便输入一些字符,发现字符没有被转义过滤,原封不动的显示了出来。
然后我们像反射型xss那样输入一个js代码尝试。结果依然执行了js代码并且弹窗。
这时我们刷新一下界面,发现又重新弹窗,很明显,存储型xss将我们输入的内容保存了下来并且当我们打开时再次执行了代码。查看代码
发现的确是保存了留言信息,然后通过循环将数据库的信息不动的返回到前端。存储型xss危害是非常大的,因为他保存了脚本代码,所有打开页面的人都会受到影响。
3.Dom型xss通过下面网站可以学习dom https://www.w3school.com.cn/
我对dom的基本理解就是通过编写js代码,实现对html的访问修改等操作,类似于接口。
随便输入些字符,弹出了what do you see?然后我们查看一下页面源码。通过js代码可知道,他将我们输入的值拼接到了一个a标签里并将拼接的结果再放入id=dom的盒子里
所以我们可以通过闭合的方式利用这个漏洞 在输入框中输入<a href='#' onclick="alert('xss')"'>what do you see?</a>" 然后将我们补充部分也就是#' onclick="alert('xss')"输入到框中执行
他就会将我们的代码执行出来。
然后我们用下一个dom型xss-x来实验一下。
查看源码发现他通过window.location获取url中我们的输入信息然后还是发送到a标签。我们再次使用上次的代码进行,发现依然弹出窗。这样通过url获取的信息,我们可以像反射型那样进行攻击也是不安全的。