buu xss lab 1~5
题目在buu basic区 https://buuoj.cn/challenges#XSS-Lab
主页面是这个东西(这表情怎么满脸嚣张),点图片
1. level 1
看name=test。试试能不能用html改改它
试着改一下用户名,加个标题啥类似的
证明确实可以。
xss的这种题之前淇姐讲过应该是在html代码里面调用JavaScript代码,然后放个alert脚本让这个页面弹出来弹窗,弹窗里面一般就是答案(我记得是这样)
所以把这个给它写进去
<script>alert("ok")</script>
或者<script>alert("ok");</script
这就完成啦!!tips:上图那个“完成的还不错!”的那个用红框标注的位置,一般在比赛中也是给flag的位置
原理查了一下
看源码,发现URL的name值可以随意输入,所以直接上script方法。
2.level 2
一进去是这么个页面,先看看能不能向刚刚那样用html改一下
事实证明:好事不是次次有的,不行!!!!
还是上网查吧 (这个博客告诉我也不是和html毫无关系)https://blog.csdn.net/weixin_45813388/article/details/115581895
看看源代码
可以看到test是通过GET的方式从文本框输入,并且显示在< h2 >标签中,因此我们注入的点是在value中,但此时我们如果在value中输入script语句的话,会被当成是value的值,所以我们要先用">
来过滤value的值,在通过script标签进行alert的输入,因此payload也就很简单了.
"><script>alert("ok")</script>
(那个ok的位置放1或者yes啥的基本都行,不要忘了最前面的引号哦)
这个题还有一种写法
注释掉后面的>,JavaScript中注释符为//,闭合前面的
构造playboad?keyword="><script>alert('1');</script> //&submit=搜索
也可以完成(其实没啥区别)
3.level 3
点进去的页面,随手一搜
看看源代码
发现我们注入的点还是在value中,是单引号闭合,因此我们不妨试一试level2中的'><script>alert("ysys")</script>
,发现不行,看源代码
下面那个引用部分我没看太懂
可以清晰地看到,js的标签被进行了html编码,但是标签肯定都是带有<>的
(也就是发现后台对<>进行了转义,所以弃用<>标签,而onclick按钮可用于html元素中,点击后可触发相关jsp代码)因此这里我们就不能够使用前面的js标签来进行注入,同时我们也看到单引号是没有被注释的,因此我们先通过闭合value的值,再采取事件的方式进行注入,就可以成功进入下一关了
keyword=' onclick='alert(1)&submit=搜索
或' onclick='alert(1)
弹窗需要再次点击输入框
4.level 4
源码
拿到题目,首先看到后台源码的value值是用双引号包起来的,因此我们先将上一题的payload单引号换成双引号注入一下试试,直接就成功了…,其实我们可以用尖括号先注入一下,发现注入是不成功的,因为尖括号被编码过了。
payload: " onclick="alert(1)
****弹窗需要再次点击输入框
5.level 5
参考博客https://blog.csdn.net/weixin_53002381/article/details/126112104?utm_medium=distribute.pc_relevant.none-task-blog-2
先输入<script>alert(1)</script>
来试试
发现script标签被_
分隔了
再尝试双引号闭合,使用上一题那种点击触发事件,试一下" onclick="alert(1)
结果发现它把onclick也过滤了
再尝试使用大写,结果一样
大写也被过滤了,现在试一下a标签,发现a标签可以
"><a href="javascript:alert(1)">aa</a>
弹窗需要点击aa触发