。Tips:

  1. 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS
  2. 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器);
  3. 通过变化不同的script,尝试绕过后台过滤机制

---以上搜集于网络。

前言:有必要说明下,pikachu靶场中xss题目中我遇到了非作者预期的过滤方法,是由于php环境版本造成的(低于php5.4)。比如部分题目对于双引号和单引号的转义过滤,导致我无法参考互联网大佬们的建议,当然,这也使我学习了更多的方法。塞翁失马,焉知祸福。

甲.反射型xss(get)

首先看一下题目,只有一个输入框,输入11试试

下面提示中引用了我输入的“11”,很可能是突破点,查看后台

这段话放在了标签中,尝试在输入框中输入测试命令。

<script>alert(“xss”)</script>

这里要讲一下,alert参数是可以连接字符串的,如果不加/或者单引号双引号,会被当做变量处理,如果变量有值则会弹出参数值,如果没有则不会弹窗。而后接数字就可以直接弹出。所以alert参数后接字母需要加/、单引号、双引号,后接数字直接填写。

输入payload时发现该输入框做了最大长度限制的,将maxlength值改大点就可以了。

测试后失败,查看源码,发现alert参数值被加\干扰了。\"会将双引号这类特殊字符变成文本字符串,使原来我们输入的payload无法被正确识别。(php版本低于5.4造成的)

尝试使用<script>alert(/xss/)</script>

可以执行,尝试使用<script>alert(1)</script>

也可以执行。

get方式还可以通过更改url来测试,如下图。

乙.反射性xss(post)

登录后和第一题做法一样,但post方式参数不在url中显示,只能在输入框中测试。

丙.存储型xss

本题目输入框中的内容提交后会存储在数据库中,比前两种漏洞危害性更大。

提交payload后页面上会对它进行加载,然后每次打开该页面就会执行。

 

丁.DOM型xss

HTML DOM 对象 - 方法和属性

一些常用的 HTML DOM 方法:

  • getElementById(id) - 获取带有指定 id 的节点(元素)
  • appendChild(node) - 插入新的子节点(元素)
  • removeChild(node) - 删除子节点(元素)

一些常用的 HTML DOM 属性:

  • innerHTML - 节点(元素)的文本值
  • parentNode - 节点(元素)的父节点
  • childNodes - 节点(元素)的子节点
  • attributes - 节点(元素)的属性节点

查看源码,定义str参数,把id=text的值给str,在id=dom的地方文本显示str的值。

本题目中输入被a标签的href超链接参数中,所以主要实现的脱破口在超链接处。

首先了解两个事件,onmouseover(鼠标悬停执行执行)和onclick(对象被点击时执行)。

字符串使用单引号或者双引号来起始或者结束

源代码中提供的方法,第一种闭合掉a标签,然后插入图片代码,然后鼠标悬停在图片上时执行payload。第二种在a标签上添加了点击执行payload的代码。

戊.DOM型xss-x

这道题点击提交后,有一个点击事件。

只有点击后执行domxss脚本,显示dom参数,里面包含输入的值“1”

和上题解题思路一样

'onclick="alert(1)"

单引号结束掉href参数,然后编写点击执行事件。

然后就可以点击执行了。

己.xss盲打

测试输入#"',登陆后台

查看源码

被反斜杠将字符变成文本字符了,测试多次后发现输入特殊字符都会被转义。绕过方法也很简单,将td标签闭合掉,使输入的字符能够正常识别。

构建语句</td><script>alert(1)</script><td>,提交后后台页面就会变成这样

随后管理员每次访问后台页面,都会执行一次payload

庚.xss过滤

尝试输入#''<>字符,源码显示

单引号被过滤掉了(可能是web搭建环境过滤的,我在别的电脑上跑pikachu没有这个过滤)。

尝试<script>alert(1)</script>,被过滤了。

随后测试将script大写,绕过

还有一种方式解题,使用<img src=# onmouseover="alert(1)">

提交后双引号又被转义了

测试后发现输入参数值会被加上双引号,比如输入<img scr=#>

所以直接去掉双引号,<img src=# onmouseover=alert(1)>

PS:如果在没有自动添加双引号,且双引号被过滤的情况下(或者任意特殊字符被过滤),可以使用该特殊字符的实体。例如本题中双引号被过滤,则可以使用“"”来代替双引号。当然,本题情况不适用这种方法,只是做演示。(alert("xss")中引号使用实体代替无效)。

庚.xss之htmlspecialchars

首先了解该函数作用

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

被转换的预定义的字符有:

  • &:转换为&amp;
  • ":转换为&quot;
  • ':转换为成为 '(默认不转换单引号)
  • <:转换为&lt;
  • >:转换为&gt;

htmlspecialchars()函数语法格式:

$str = htmlspecialchars(string,flags,character-set,double_encode);

参数说明

第一个参数规定了需要转换的字符串;第二个参数规定了如何处理引号、无效的编码以及使用哪种文档类型,是可选参数;第三个参数也是可选参数,规定了要使用的字符集的字符串;第四个参数也是可选参数,规定了是否编码已存在的 HTML 实体的布尔值(TRUE:将对每个实体进行转换;FALSE:不会对已存在的HTML实体进行编码);

可用的引号类型:

ENT_COMPAT:默认。仅编码双引号。ENT_QUOTES:编码双引号和单引号。ENT_NOQUOTES:不编码任何引号。

提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。

那么开始看题目,输入<script>alert("xss")</script>

查看源码,输入以文本形式显示。

使用 '<script>alert("xss")</script>,使用'结束上个字符串

然后被转换为字符实体了。

输入#'结束href参数

开始构建payload

#'onclick=alert(1)

(1)后多一个',导致参数错误,重新构建payload,#'onclick='alert(1)

完成。

辛.xss之href输出

看到题目首先构建语句

#'onclick=alert(1)

这是个啥情况,明明你昨晚不是这么说的?

看看源码,卧槽,你个糟老头子,竟然用ENT_QUOTES这么狠毒的方法过滤我单引号。

这,老夫无能为力啊,直接用javascrpit来执行弹出框了

javascript:alert(1)

PS:

刚好趁机了解了下JavaScript三种弹出框

  • 警告(alert):就是这几题一直使用的类型
  • 确认(confirm):

  • 提问(prompt):

壬.xss之js输出点

查看题目,输入文本后只返回同一句话,并且源码上这句话旁边也没有返回和输入值相同的字符。

查看源码,发现了一段js语句

可见输入的值被赋值给了MS,我们可以构建payload,将前一句script闭合

</script><script>alert(1)</script>

今日份肝帝达成(@……@)

pikachu靶场-XSS的更多相关文章

  1. pikachu靶场XSS详解

    一.反射型XSS 1.get型 源码前后区别 前 <form method="get"> <input class="xssr_in" typ ...

  2. 利用xampp集成环境搭建pikachu靶场及部分问题解决

    xampp的环境部署 1.本地服务器的搭建 首先要到官网下载xampp https://www.apachefriends.org/zh_cn/index.html 有各个不同的系统版本,这里我们选择 ...

  3. Pikachu靶场SSRF学习

    下载Pikachu靶场:https://github.com/zhuifengshaonianhanlu/pikachu Windows用phpstudy也行,记得要改config.inc文件 打开S ...

  4. Pikachu靶场通关之XSS(跨站脚本)

    一.XSS(跨站脚本)概述 Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XSS可以 ...

  5. pikachu的xss及csrf

    一.XSS 可解析的js 未经过滤 XSS见框就插     script 大小写  中间插入 <img src="" onerror="alert(11111)&q ...

  6. pikachu靶场-CSRF

    xss和csrf区别: CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏. PS: 由于之前将php5升级到php7,导致靶场环境出现以下问题 ...

  7. Web For Pentester靶场(xss部分)

    配置 官网:https://pentesterlab.com/ 下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso 安装方法:虚 ...

  8. Pikachu靶场SQL注入刷题记录

    数字型注入 0x01 burp抓包,发送至repeater 后面加and 1=1,and 1=2 可判断存在注入 0x02 通过order by判断字段数,order by 2 和order by 3 ...

  9. pikachu靶场-暴力破解(验证码、token)

    甲.基于表单的破解 较为简单,直接BurpSuite爆破. 乙.验证码绕过(on server) 打开题目,比第一题多了一个验证码验证,很多初学者遇到验证码就会感觉不知所措.其实这题也较为简单,首先正 ...

随机推荐

  1. 生成随机字符串 php

    /** +---------------------------------------------------------- * 生成随机字符串 +------------------------- ...

  2. win10和centos7双系统双磁盘引导的实现

    win10和centos7双系统双磁盘引导的实现1.背景:dell5460笔记本电脑M2-120G固态盘无法在bios中引导,新装了M360G固态盘后,考虑把120G固态盘安装centos7.5系统做 ...

  3. Rocket - debug - DebugTransport

    https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...

  4. 腾讯云EMR大数据实时OLAP分析案例解析

    OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过QQ音乐与腾 ...

  5. webpack+vue2.0项目 (二)热加载,vue-router

    目录创建好之后,命令行输入 npm run dev 因为在配置文件config/index.js里: dev: { env: require('./dev.env'), port: 8080, aut ...

  6. Java实现 LeetCode 404 左叶子之和

    404. 左叶子之和 计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 /** * Definiti ...

  7. vscode的个人配置

    前言 此篇只是为了记录自己vscode的设置,防止以后配置丢失,无实际意义 { "files.autoSave": "afterDelay", "ed ...

  8. 如何监控 Linux 服务器状态?

    Linux 服务器我们天天打交道,特别是 Linux 工程师更是如此.为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展. 本文介绍的几个命令,不仅仅适用于服务器监控, ...

  9. 如何解决ubuntu 12.04重启后出现waiting for network configuration和网络标志消失问题

    如何解决ubuntu 12.04重启后出现waiting for network configuration和网络标志消失问题 作为菜鸟的我在学着设置网络后,重启电脑后显示 waiting forne ...

  10. zabbix 监控cpu 温度

    Zabbix监控Linux主机CPU温度   一.客户端 1.客户Linux主机安装Im_sensors [root@localhost ~]# yum install -y lm-sensors-y ...