十四、pikachu之XSS

文章目录

  • 1、XSS概述
  • 2、实战
    • 2.1 反射型XSS(get)
    • 2.2 反射型XSS(POST型)
    • 2.3 存储型XSS
    • 2.4 DOM型XSS
    • 2.5 DOM型XSS-X
    • 2.6 XSS之盲打
    • 2.7 XSS之过滤
    • 2.8 XSS之htmlspecialchars
    • 2.9 XSS之href输出
    • 2.10 XSS之JS输出

1、XSS概述

  Cross-Site Scripting简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

  • 反射性XSS;
  • 存储型XSS;
  • DOM型XSS;

  XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

  因此,在XSS漏洞的防范上,一般会采用对输入进行过滤输出进行转义的方式进行处理:

  • 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  • 输出转义:根据输出点的位置对输出到前端的内容进行适当转义。

2、实战

2.1 反射型XSS(get)

(1)j既然已经提示这题属于反射型XSS,直接上payload:;

十四、pikachu之XSS_第1张图片
  发现:payload被截断了。查看前端源码:

十四、pikachu之XSS_第2张图片
  输入框有长度限制,那么我们直接Burp进行抓包,修改数据包试试:

  payload:http://192.168.92.1:32769/vul/xss/xss_reflected_get.php?message=%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%58%53%53%22%29%3c%2f%73%63%72%69%70%74%3e&submit=submit

十四、pikachu之XSS_第3张图片

2.2 反射型XSS(POST型)

(1)首先使用用户名和密码进行登录;
十四、pikachu之XSS_第4张图片
(2)这一题跟前一题差不多,直接在输入框中上payload:

十四、pikachu之XSS_第5张图片

2.3 存储型XSS

(1)首先在留言板中输入一些特殊的字符串,发现并没有过滤:
十四、pikachu之XSS_第6张图片
(2)跟前面一样,直接上payload:,登录后台地址去看看(/xssblind/admin_login.php)。

十四、pikachu之XSS_第17张图片
十四、pikachu之XSS_第18张图片

2.7 XSS之过滤

  绕过过滤的方法:

  • 前端限制绕过,直接抓包重放,或者修改html前端代码
  • 大小写,比如:
  • 拼凑:pt>alert(111) pt>
  • 使用注释进行干扰:pt>alert(111) ript>
  • 使用其他的标签,绕过script标签,如:

这里使用payload:
十四、pikachu之XSS_第19张图片

2.8 XSS之htmlspecialchars

  htmlspecialchars()函数是php常用方法,是把预定义的字符转换为HTML实体。其语法:htmlspecialchars(string,flags,character-set,double_encode)

  常见的预定义的字符有:

  • &(和号)成为&
  • "(双引号)成为"
  • (单引号)成为'
  • <(小于)成为<
  • >(大于)成为>

  输入" ' > < 之后,发现除了单引号没被转化外,其他都被转化为HTML实体了。
十四、pikachu之XSS_第20张图片
  故,构造payload:#' onclick='alert(/xss/),前一个引号闭合href属性,第二个引号闭合onclick属性。
在这里插入图片描述
十四、pikachu之XSS_第21张图片

2.9 XSS之href输出

  在输入框中输入,打开源代码,发现均被HTML实体化了,闭合标签和闭合属性的方法行不通了。
十四、pikachu之XSS_第22张图片
  关于 标签的href属性:

   标签的 href 属性用于指定超链接目标的 URL。href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

  总而言之,在a标签的href属性里面,可以使用javascript协议来执行js,可以尝试使用伪协议绕过。构造payload:javascript:alert(/xss/)

注意:alert中字符串需要用"、' or /包含,数字不用。
十四、pikachu之XSS_第23张图片

2.10 XSS之JS输出

  输入,发现不行,打开源代码,可以看到payload被带到script标签里去了。
十四、pikachu之XSS_第24张图片

  构造payload:';alert(1);//';闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的';

十四、pikachu之XSS_第25张图片

你可能感兴趣的:(pikachu,xss,状态模式,前端)