写在最前面:
仅供学习使用。
前端三件套自学的不是很好,所以很多地方可能有点不清楚、有疑惑,请大佬带带。
第一关
这关考察的是反射型xss,在这关学到的是在<h1></h1>等文本类标签里插入<script>alert(xss)</script>可以执行,只要没有额外条件过滤。
观察网页和url可以看到name是个变量。于是在变量上输入JS进行测试成功。
网页源码差不多就变成了这个样子
第二关
因为是xss,所以打开网页源码发现test这个是input的value的值,value会将JS当做值来处理,尝试简单JS弹窗。
失败了好呀,发现没有过滤JS关键字,那么就对语句进行构造,闭合input,让JS不再作为值,而是一段JS代码,测试成功。
test"><script>alert(1)</script>
第三关
.htmlspecialchars()这个php函数让 < 和 > 不会被浏览器用作HTML标签运行,即不当做字符,当做HTML实体。
输入第二关的语句进行测试,发现input被闭合了,但是却没有反应,于是猜测有 .htmlspecialchars() 函数。源码里确实是这个。第八关就是从这个函数方面入手。
构造不会被转换的语句,这时我想到的是HTML事件 ' οnclick='alert(1),因为单引号不会被转义,所以这时使用单引号就可以将value闭合,进而闭合input。使用 ' οnclick=alert(1)// 也行,//注释了后面的所有语句,一样可以执行。
第四关
照例使用弹窗看看有无过滤,发现 < > 被过滤了,即不能使用标签了。
尝试点击弹窗,发现没有过滤单引号,同时value后面不是单引号,那八成是双引号,打开源代码一看果然是,那就直接把单引号改成双引号,果然可以。
第五关
照例使用弹窗看看有无过滤,发现script被重组了,但是标签可以用。html事件型的onclick也被重组了。那么试试javascript:alert(1)
javascript:alert(1)没有问题,那么试试构造标签。
这里构造超链接。
"><a href="javascript:alert(1)">link</a>
果然可以
但是之前尝试不闭合,发现下面的图片和字段都变得可以点击了,不知道为什么标签自动补齐了?
点击也可以过关。