xss|xss-labs通关(未完成)

本篇为本人xss—labs通关,未完成之前会一直编辑
level1
xss|xss-labs通关(未完成)
文章图片

上来一头雾水,不知道该怎么办,之后我们可以赋值test试一试,查看源代码
xss|xss-labs通关(未完成)
文章图片


从这里我们可以看到它将name的参数值,插入到了 标签之间
那么 就很明显,这一关主要就是考察反射型xss
但是由于不知道服务器端对于提交的敏感字符有没有过滤,所以这里直接在name参数
中赋值一个简单的弹窗来进行测试。
操作如下:
将name参数重新赋值:
xss|xss-labs通关(未完成)
文章图片


level 2
xss|xss-labs通关(未完成)
文章图片

有搜索了,我们先试一下test,之后查看代码
xss|xss-labs通关(未完成)
文章图片


从源码来看,它的功能就是通过点击“搜索”按钮,将输入框内的内容以get方式提交给服务器上的level2.php,经过服务器的动态处理之后又会将参数keyword的值插入到 标签之中以及添加到标签中的value属性的值内。尝试使用上一关的恶意语句操作进行弹窗
xss|xss-labs通关(未完成)
文章图片


发现不对,查看网页源代码
xss|xss-labs通关(未完成)
文章图片


可以看到在 标签之中的恶意代码被编码了。其中<>都被编码成了html字符实体。
只需要将属性的引号和标签先闭合就可以了。
将keyword的参数值重新赋值
">//
xss|xss-labs通关(未完成)
文章图片

level3
xss|xss-labs通关(未完成)
文章图片

老规矩,用test尝试,然后查看源代码
xss|xss-labs通关(未完成)
文章图片

好像与第二关相似,我们用构造弹窗试试
xss|xss-labs通关(未完成)
文章图片

不行,查看源码
xss|xss-labs通关(未完成)
文章图片


这两处都将<>这样的敏感字符编码成了html字符实体。
猜测服务器端在这两处都用htmlspecialchars()函数进行了处理。
去服务器端看看level3.php代码
xss|xss-labs通关(未完成)
文章图片

没错,之后我们使用
标签的一些特殊事件来执行js代码
构造代码:level3.php?keyword='onfocus=javascript:alert('xss') > //
xss|xss-labs通关(未完成)
文章图片

居然还不对,不过搜索没了说明 触发了onfocus事件(网页上一个输入框,该输入框时输入框被选中可以输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此点击当前页面的输入框就可以完成弹框了。
xss|xss-labs通关(未完成)
文章图片

level4
xss|xss-labs通关(未完成)
文章图片

还是get方式请求,直接上level2代码,发现不行,我们查看下源码
xss|xss-labs通关(未完成)
文章图片

我们发现,第二行的<>编码转换了,第四行的<>没有了
我们直接使用上一关代码。level4.php?keyword="οnfοcus=javascript:alert('xss')"
点输入框,结束
level 5
xss|xss-labs通关(未完成)
文章图片

发现依旧是get方式,所以还是反射型xss,弹窗代码走起
xss|xss-labs通关(未完成)
文章图片

【xss|xss-labs通关(未完成)】 寄,直接看源码
xss|xss-labs通关(未完成)
文章图片

第二行,又是<>被编码处理了
第四行中间出现一个_,我们用level3代码试试
依旧不行,我们看看源码
xss|xss-labs通关(未完成)
文章图片

寄,居然对onfocus事件防范了
不过我们可以换一个标签执行代码
?keyword=">xss //
xss|xss-labs通关(未完成)
文章图片

出现了一个xss的蓝色标签,点一下,便成功了
xss|xss-labs通关(未完成)
文章图片


    推荐阅读