前言
经过上次对XSS的理解与对XSS理解的一个小练习,清楚了之后,开始着手进行XSS平台搞一波。
这是我练习的平台http://test.xss.tv/
第一关
这里的payload明确看到为4,查看地址栏与之对应的传参为test.
但是页面上没有出现明确的注入的地方,也没有输入的地方,这时候我们可以使用Hackbar进行注入脚本,也可以在URL栏进行注入。
我们输入< script>alert(‘yes’)</ script>(由于编辑器问题我在<后面加了空格,使用时记得注意清除掉。以下都是这样。)
在地址栏输入后回车 就OK了
第二关
这是我们依旧使用第一关的代码进行一下测试。发现没有弹窗的出现,他们提示我没有找到相关的内容。之后我们进行源代码的查看。
我们根据源代码发现需要先将value属性闭合,然后使用javascript脚本调出alert函数过关
//输入代码回车
“>< script>alert(‘yes’)</ script>
闭合之后绕过进行实现脚本的注入。
之后点击搜索或者回车都可以 可以得到以下的结果。回车或者点击搜索后过关
第三关
这个页面与之前关卡的相似 这里我直接使用’” >进行测试,之后输入第二关用过的语句进行测试。
“>< script>alert(‘12321321terad’)</ script>进行测试,并没还有成功,这是输入值,进行源代码的查看。
我发现,我输入的字符被转义成了其他的字符,没有办法实现有效的注入,没有形成语句。我们输入的”<> 都被做了转义处理。
这里进行了一下小小的总结
总结HTML 的所有特殊字符的实体编号和实体名称表
这里确定以上字符无法在输入框中注入,所以不能采用第二关的方式调用javascript脚本
于是这里我使用了别的方法调用alert()函数实现闯关:
ooninput 能够获取到运行的脚本。
123’ οninput=’alert(123)
之后我们依旧使用’来闭合前面的语句。
输入后可以看到
PS: 如果我们在没有看源代码的情况下如何去判断value属性使用的是单引号还是双引号?
在上面已经使用过一次。
判断value使用的是单引号还是双引号方法:
输入 ‘ “ > 三个字符测试闭合,查看文本框内的内容
文本框无内容就是单引号,内容为 ‘ 即为双引号
这一关中使用的是单引号,所以value没有值,文本框内没有内容
如果我们输入如下的字符test’”> 就会得到test 因为value闭合为’
第四关
进入第四关直接进行一个之前的语句来个测试
输入< script>alert(‘12321321terad’)</ script>测试:
结果是没有找到相关的结果。这时候我发现框中返回结果跟我们输入的不大相同,让我来看看它的源代码。
我们可以清楚的看到 我们符号中的<>被过滤掉了。
这也是过滤的问题 我继续使用了第三关的方法测试,输入语句:
“ oninput=”alert(‘’)
OK成功弹窗进入下一关。
第五关
输入语句测试
“> < script>alert(‘ok’)</ script>
观察源代码发现我输入的字符被替换了
我们使用大小写不同的绕过方式,发现并没有什么卵用。
接着我们使用HTML中的oninput事件发现也是被替换掉了
过滤了< script>和on就是说之前我用的事件触发就不能再用了。
所以我现在尝试嵌入一个连接,在连接的时候调用alert
“>< a href=”javascript:alert(‘ok’)”>sl</ a>//
可以伪造了一个链接在链接中包含
这时候再点击sl
OK下一关
第六关
进入我们先测试一下。
这次使用的不再是’ 而是” 这里我们还是继续语句测试
“> < script>alert(‘ok’)</ script>
这样 我看了看源码,
发现script 变成了scr_ipt
script被过滤掉了,我又试试了HTML中的oninput事件
同样没有成功查看源码
oninput 变成了o_ninput
看来是跟前面一关的题目一样,这样我们就继续使用伪链接的方法进行绕过。
“>< a href=”javascript:alert(‘ok’)”>sl</ a>//
!看来是个狼灭,这也过不去,看看源码
href被替换成了hr_ef
我又将部分字母换成大写尝试:
“> < a hRef=javascript:alert(‘ok’)>sl< /a>//
这时候出现了链接 OK点击链接下一关
第七关
进入第七关,之前用的测试语句走一波先。
“>< script>alert(‘12321321terad’)</ script>
仔细看输入的内容与返回的内容前面的script没了。应该源码中有什么语句把它给过滤掉了,这时候我们看看源码。
来使用一波HTML事件试试
“ οninput=”alert(‘ok’)”这应该是又被过过滤掉了
这样的话 记得之前用过双写绕过
来试试”> < scrscriptipt>alert(“123123”)</ scrscriptipt>
既然这样双写可以绕过的话,相同的应该” oonninput=”alert(‘ok’)”
OK下一关。
第八关
进入第八关,依旧进行尝试
发现此路不通 同样实验HTML事件 也是不通,那就看一波源码,发现这个
发现”,<,>被转义了而且ON中间也有过滤。这一下事情好像没那么简单。
然后再次看看上的源码,发现了一个链接 难道又是伪链接?
来实验一波发现依旧不行同时script还是被过滤了。这样的话,需要用到script但是不能让他被过滤掉,好像只能用到其他的编码形式了,于是去找了找度娘 发现了script的编码形式:
HTML实体编码(HEX)
javascri&# x70;t:alert()
HTML实体编码(DEC)
javascri&# 112;t:alert()
PS:还是由于编辑器的问题 我在上面的编码中的”#”后面添加了空格,(看来我得换个编辑器了)。
但是要注意 后台这里过滤的是script 并没有java
于是输入进去
ok开启下一关
第九关
进军 第九关
看到跟前面一关差不多的形式也是友情链接 那就直接来 把上一关的语句直接来用结果当然不会让你过。
那我们来看看他的源码
在href一栏中告诉我 我的链接不合法。连接不合法怎么办。肯定是你的URL不对 少了HTTP这个,他没有检测到,那我就让他检测到 同时不让他起作用不久OK了吗。
所以在这我给它注释掉javascri&# x70;t:alert(/sl/)//http://
这样不就OK了这时候看下它的源码
相比较下 第九关就是在第八关上的多添加了一个认证,需要检测到http
第十关
首先看了下没有发现输入框
这样还是看看源码的比较好
keyword过滤了用不了,没有输出点。有点懵。发现它源码中的input中 tupe是hidden 是个隐藏。不过还是不知道该从何处下手最好参考了下先知的wp。
因为也没过滤什么,最后的参考payload为:
keyword=test&t_sort=” type=”text” onclick=”alert()
小总结
暂时先就练习到这里,改天继续更新做题情况。总之要学习的地方还很多,还有很多的未知领域,需要继续加油了!