XSSLABS精简总结

适看人群: 精简总结适合有一定(SQL或XSS等)注入基础的朋友阅读,若在做题过程中遇到困难或是想了解更多细节可在评论区留言询问。
一个小Tips: 您可以点击右方的
按钮打开只看目录模式,以便快速定位到章节。
第一关
直接把js语句注传入name里就过了。
<script>alert(`123`)</script>

第二关

直接注入没成功,右击页面查看一下源码,发现①处尖括号被替换,很可能是开发者使用了htmlspecialchars参数,不过②处仍然是原样,那就从②下手。
使用">对value进行补全,在payload最后加上//来注释掉后面的语句。
"><script>alert(`123`)</script>//

第三关

1和2都将尖括号替换了,我们换一种没有尖括号<、>的执行方式,在2处使用onfocus来执行js命令。
同样地,我们需要使用'和//将语句补全(这一步也可以叫做使语句闭合)。
' onfocus=javascript:alert(`123`)//
类似的事件有onfocus、οnmοuseοver 、onclick等,都可以实现类似功能。
第四关

与上一关不同的是,2处将尖括号直接过滤了,这个仍然可以用onfocus来绕过,注意语句闭合时单引号变为双引号。
"onfocus=javascript:alert(`123`)//
第五关

服务器将<script>标签做了处理,onfocus、οnmοuseοver 、onclick也都被处理了,我们只好寻找新注入方式。
经过查找,我们发现 <a>标签的href属性用于指定超链接目标的 URL,href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。
所以我们可以利用这一特点来构造payload:
"><a href=javascript:alert(`123`) > aaaaaaaa</a>
第六关

服务器将href做了处理,我们使用大小写转换绕过。
"><a Href=javascript:alert('123')>aaaaaaaa</a>//

第七关
js标签、事件、href属性都被服务器过滤了,针对过滤,我们可以尝试双写绕过。
双写绕过具体详细操作移步我的另一篇短文章:#双写绕过的具体实现【小短篇】
"><a hrhrefef=javascscriptript:alert('123')>aaaaaaaa</a>//
第八关
对script和常见方法中间加入了其他字符,使用编码转换绕过(将原payload javascript:alter(1)转为unicode的&#xxx编码),
unicode在线转换http://www.jsons.cn/unicode/

javascript:alert(1)
第九关
对传入的链接是否有http://进行了验证,将原payload编码后加上http://和注释符//来绕过。
javascript:alert(1)//http://
第十关
从前端可以发现这一关中隐藏了编辑框,在代码审计后,通过payload将编辑框显示出来以进行xss。

下方这张图为代码审计时的源码,可以看到t_sort被接收后连续进行了两次转换将左尖括号和右尖括号替换为了空格,那么我们选取不使用左尖括号和右尖括号的方式来xss。

?keyword=111&t_sort="οnclick=alert(1) type="text"


被折叠的 条评论
为什么被折叠?



