XSS-labs总结1

发布时间 2023-05-24 16:43:43作者: vaneshadow

XSS-labs

level 1

先查看一下源代码

image-20230331083250028

由此可见并没有任何的过滤措施,直接输入关于name的参数作为payload即可

image-20230331083359795

弹窗成功

level 2

再去看源代码

image-20230331083707453

由此可见在获取keyword的值之后有两次输出,一次被.htmlspecialchars()所过滤,但第二次在表单input输出并没有进行过滤操作,由此我们可以通过第二次的输出进行xss注入

image-20230331083940980

有两种方法

1.不逃逸input标签闭合前边的双引号加个事件触发xss即可:

payload: "onmousemove="alert(1)

image-20230331084951509

2.逃逸出input标签执行另外的标签触发xss即可:

标签payload为:"> 很遗憾用不了

闭合标签 test">

image-20230331090118282

level 3

第三关仍然先看源代码

image-20230331090243323

:这次它将两个输出点都做了htmlspecialchars()转义,那既然做了转义那么双引号和

尖括号就没有效果了,但是单引号在这个函数中如果没做特殊的改动,默认是可以出效果

的,而且源码中的value是用单引号,看来是有意让使用单引号。

payload: ' onmouseover='alert(1)

image-20230331090510919

level 4

一如既往的先分析源代码

image-20230331091020952

通过代码能看出,本关将<和>都替换成了空格第一个str输出也做了过滤,但是这并不影响和上一题一样进行闭合和在input标签内发出xss

image-20230331091833919

level 5

一如既往查看源代码‘

image-20230331092004876

和前几题大差不差,也是将

payload:"> <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgpPC9zY3JpcHQ+"> <"

额,能弹窗不能过关

level 8

一如既往先看源代码

image-20230331100029622

这次代码先是将字符转换为小写,然后过滤特殊字符和双引号,最后又加了一个转义函数输出,所以按常规方法绕几乎不可能成功,代码处的添加友情链接是

突破点,在input框中输入字符提交之后,在友情链接处会载入一个拼接后的a标签,因为javascript被过滤对其进行编码绕过再点击友情链接即可。

但是我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议

image-20230331100627178

image-20230331100644802

level 9

image-20230331101448243

image-20230331101458855

这次在上一题的基础上加入了strpos()函数,查找如果url中找到'http'那么会返回找到位置的位数,自然不会返回0也就不会等于false,那么就可以绕过限制了,但是为什么会这么做呢?回想了下,应该是让输入框必须要输入合法的URL即带有http的字符串,那么可以向输入框加进去就可以绕过了

payload为:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;//http://

直接输入javascript:alert(/xss/)//http://会和第八题一样被过滤

image-20230331102240887

level 10

image-20230331102910927

image-20230331103438998

从前端源代码发现有隐藏表单,这道题有俩个输出的地方,第一个被实体化过滤,第二个是隐藏表单的"t_sort"参数即'$str33',过滤了尖括号,那么就在input标签中触发xss即可,可以用onmouseover或者是onclick,需要将隐藏表单显示出来触发:

先闭合value值

payload为:url后加 &t_sort=xss" onmouseover=alert(/xss/) type="text"
payload为:url后加 &t_sort=xss" onclick=alert(/xss/) type="text"

image-20230331103724578