test1

第一题直接在test插入XSS代码即可

test2
第二关对内容进行”“包裹

这里可以采用”>来绕过


test3

代码审计发现这里用了htmlspecialchars函数,这个函数对<>和’ “等进行了转义,这里可以用事件来绕过

test4

这里用了str_replace,还过滤了‘,本来想尝试双写,还是用上面的方法把,换成”

test5

如图,这里过滤了
test6

这里看到过滤了很多标签,可以用大小写绕过

test7

这里把script直接过滤了,并且strtolower把字符变为小写过滤大小写,这里因为是置换为空可以用双写绕过">alert(1)

test8

这里不能用重写,而且htmlspecialchars将一些特殊字符转化为HTML实体,进行html编码绕过


这里要先添加友情链接,再点击友情链接,payload javascript:alert(1)
test9

这里多了进行判断字符里是否有http://,构造javascript:alert(‘http://’),在alert插入http://

test10

这题的关键在于传递的参数通过t_sortt_sort传递,并且禁用了<>,通过事件来触发,并且指定类型 http://127.0.0.1/xsschallenge/level10.php?t_sort=1" οnmοuseοver=“javascript:alert(1)” type=“string”

test11

这题给了两条路,试了一下上一题的解题思路,发现不行,”会被转义

使用另一个方法,在Referer处插入XSS

test12

从代码来看很容易发现是从UA头入手,语句和前面一样

test13

这里换成了Cookie注入,user=1" οnmοuseοver=“javascript:alert(1)” type=“text”

test14
这一关原来的地址打不开了,修改了一下源码,直接做15关

test15

GPT一下,发现

'http://127.0.0.1/level1.php?name=<img src=1 οnerrοr=alert(1)>'这是别人的payload,不知道为什么做不出来,用魔法了

test16

这里关键是过滤了空格,/和%0a都可以代替空格,这里过滤了/,用%0a

后面的复制大佬的payload
17
查看17关的PHP源码,发现有个src=xsf01.swf,swf文件是以前的旧浏览器的flash文件,但是现在浏览器基本都不支持了,所以,把源码修改改为src=index.png,并不影响。
有个标签,这个标签定义了一个容器,用来嵌入外部的应用程序等。现在不建议使用,一般使用等标签代替。构造如下payload
http://127.0.0.1/xss-labs-master/level17.php?arg01=a&arg02=b οnmοuseοver=‘alert(123);’
18
同上
http://127.0.0.1/xss-labs-master/level18.php?arg01=a&arg02=b οnmοuseοver=‘alert(123);’
19
按照同上修改PHP文件,然后payload一下,发现并不能成功,因为在这一关的src=后面有个双引号,也就是说会把index.png?和你传入的值放在一起进行处理。又因为传入的值经过htmlspecialchars实体化处理,
所以无法闭合双引号。 先把index.png?恢复成原来的,然后参考大佬的文章:https://blog.csdn.net/u014029795/article/details/103213877
20
参考文章:
https://blog.csdn.net/u014029795/article/details/103217680