XSS练习(alf.nu/alert1)

慢慢来,学习以及练习一些"技巧"

*** ***

Warmap

没有任何过滤,直接进行闭合,; payload,还是截图方便
XSS练习(alf.nu/alert1)_第1张图片

Adobe

escape函数将输入的引号"转换为\\*,对引号进行了转义。如果输入为\",就会转换为\\\",这个时候,本来要转义的引号变成转义反斜杠了,从而绕过这个简单的转义触发…
XSS练习(alf.nu/alert1)_第2张图片

JSON

这个级别通过JSON.stringify进行对象序列化,说白了就是把对象的类型转换为字符串类型。
简单来说,就是过滤了\,"等字符,分别转化为\\,\"等,但没有过滤<>/字符。闭合不了log函数了,但可以闭合script标签
XSS练习(alf.nu/alert1)_第3张图片

Markdown

XSS练习(alf.nu/alert1)_第4张图片
这个级别有点意思,需要脑筋”急转弯“一下。
1、将输入进行replace过滤掉<",转换为实体编码了
2、第二波处理,如果字符串包含有http://开头的字符串,则变为http://
3、第三波,如果字符串包含[[img_src|img_alt]]格式的字符串,则变为img_alt
4、返回处理后的字符串
  在这个级别中由于尖括号和引号都被过滤了,所以要利用第二三点寻求突破。本身没有办法闭合引号或标签,但是经过规则二三之后会带有引号。
  输入:[[a|http://onload='alert(1)']]
  经过第一次转换后:[[a|http://onload='alert(1)']]
  再经过第二次转换后:<a href=http://onload='alert(1)']]
  以上相当于:<a href=
  只在chrome浏览器上成功了,我认为这是浏览器自作聪明的结果

DOM

XSS练习(alf.nu/alert1)_第5张图片
Dom型XSS, 分析这几行简单的代码,可知,输入的字符串以#作为分割,之后通过"构造语句"达到目的,
如果输入Element#alert
最后返回:document.createElement(“alert”)
常见的document的create开头的方法:

createElement
createTextNode
createComment
createAttribute
createEvent

这里可以使用createComment,构造payload:

Comment#