XSS-Challenge闯关1-10 writeup

XSS-Challenge 1-20闯关 Writeup

今天来给大家分享一下Xss challenge1-10,XSS在web安全里面也算是一个比较常见的漏洞。喜欢的小伙伴记得点个赞哦!

xss-level1:
第一关没什么好说的,反射型xss,用常规的xss弹框语句即可。
payload:<script>alert(1)</script>
XSS-Challenge闯关1-10 writeup
xss-level2:
查看源码
XSS-Challenge闯关1-10 writeup发现搜索框中的输入的特殊字符会被转换为html实体
这里我们查看前端代码,不能直接数据js语句,要闭合前面的标签。
payload:"><script>alert(123)</script><"
XSS-Challenge闯关1-10 writeupxss-level3:
查看源码:
XSS-Challenge闯关1-10 writeup发现两处都是使用了htmlspecialchars()函数,将特殊字符转为html实体,无法闭合标签。
所以,这里就需要绕过这个函数。
根据htmlspecialchars()函数,默认不编码单引号,我们在标签里面添加一个属性,使其弹窗。
payload:' onclick=javascript:alert(1) '

这里我使用的是onclick事件,插入代码后,还需点击输入框才可触发弹窗。
XSS-Challenge闯关1-10 writeupxss-level4:
查看源码:
XSS-Challenge闯关1-10 writeup发现使用replace()函数,将"<“和”>"都替换为空,所以不能插入标签弹窗。
我们可以像上一关一样,插入属性来触发弹窗。
payload:" onclick=javascript:alert(123) "
XSS-Challenge闯关1-10 writeupxss-level5:
查看源码:
XSS-Challenge闯关1-10 writeup发现使用replace()函数,将<script 替换成<scr_ipt,将on替换成o_n,采用了strlower()函数全部转换为小写,故不能大小写绕过。
同样有采用htmlspecialchars()来进行转码。

这里我们发现没有对javascript做限制,所以可以创建一个标签,使用javascript伪协议,将恶意代码写入。
payload: "><a href=javascript:alert('XSS')>click here !</a>
XSS-Challenge闯关1-10 writeup
然后点击创建的超链接,触发弹窗。
XSS-Challenge闯关1-10 writeup
level6:
查看源码:
XSS-Challenge闯关1-10 writeup可以发现使用replace()函数对一些可能会用到的标签进行替换(加入下划线),替换的字符串都是小写,因此我们可以尝试大小写绕过。

payload:" ><SCRIPT>alert(123)</SCRIPT>
XSS-Challenge闯关1-10 writeup
xss-level7:
查看源码:
XSS-Challenge闯关1-10 writeup
可以看出使用str_replace()函数将一些字符串替换为空,这里我们可以尝试双写绕过。
payload:"><scscriptript>alert(123)</scscriptript>
XSS-Challenge闯关1-10 writeupxss-level8:
查看源码:
XSS-Challenge闯关1-10 writeup可以看出,常规的字段都被替换添加了下划线,然后我们输入的字符串会插入a标签里面当作超链接导向。
与前面不同的是这是一个存储型xss
XSS-Challenge闯关1-10 writeup这里的话,可以在a标签的超链接里面引入javascript代码
同时采用%0a(换行符)来绕过常规字段被添加下划线
payload:javascri%0apt:alert(123)
当然也可以采用html实体编码绕过 在线转换
XSS-Challenge闯关1-10 writeupxss-level9:
查看源码:
可以看出,这一关与上一关常规的字段都被替换添加了下划线,不同是需要检测输入的语句中有没有带http://这个协议头
XSS-Challenge闯关1-10 writeup我可以采用注释的方式加入http:// (注释绕过)
payload:javascrip%0at:alert(123)//http://
XSS-Challenge闯关1-10 writeupxss-level10:
查看源码:
XSS-Challenge闯关1-10 writeup可以看出,表格被隐藏了,所以在前端看不见。同时,h2标签依旧是使用 htmlspecialchars()进行转义。从源码我们知道 t_sort可以传递参数,但是过滤了尖括号,那我们就使用javascript伪协议,思路是往标签内添加属性。
payload:&t_sort=click_here" type="button"οnclick="javascript:alert(123)
XSS-Challenge闯关1-10 writeup