pikachu靶场-XSS
。Tips:
- 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS
- 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器);
- 通过变化不同的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 实体。
被转换的预定义的字符有:
- &:转换为&
- ":转换为"
- ':转换为成为 '(默认不转换单引号)
- <:转换为<
- >:转换为>
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的更多相关文章
- pikachu靶场XSS详解
一.反射型XSS 1.get型 源码前后区别 前 <form method="get"> <input class="xssr_in" typ ...
- 利用xampp集成环境搭建pikachu靶场及部分问题解决
xampp的环境部署 1.本地服务器的搭建 首先要到官网下载xampp https://www.apachefriends.org/zh_cn/index.html 有各个不同的系统版本,这里我们选择 ...
- Pikachu靶场SSRF学习
下载Pikachu靶场:https://github.com/zhuifengshaonianhanlu/pikachu Windows用phpstudy也行,记得要改config.inc文件 打开S ...
- Pikachu靶场通关之XSS(跨站脚本)
一.XSS(跨站脚本)概述 Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XSS可以 ...
- pikachu的xss及csrf
一.XSS 可解析的js 未经过滤 XSS见框就插 script 大小写 中间插入 <img src="" onerror="alert(11111)&q ...
- pikachu靶场-CSRF
xss和csrf区别: CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏. PS: 由于之前将php5升级到php7,导致靶场环境出现以下问题 ...
- Web For Pentester靶场(xss部分)
配置 官网:https://pentesterlab.com/ 下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso 安装方法:虚 ...
- Pikachu靶场SQL注入刷题记录
数字型注入 0x01 burp抓包,发送至repeater 后面加and 1=1,and 1=2 可判断存在注入 0x02 通过order by判断字段数,order by 2 和order by 3 ...
- pikachu靶场-暴力破解(验证码、token)
甲.基于表单的破解 较为简单,直接BurpSuite爆破. 乙.验证码绕过(on server) 打开题目,比第一题多了一个验证码验证,很多初学者遇到验证码就会感觉不知所措.其实这题也较为简单,首先正 ...
随机推荐
- 01 . HAProxy原理使用和配置
HaProxy简介 HaProxy是什么? HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上. HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力, ...
- vc程序设计-----位图
// resource_study.cpp : 定义应用程序的入口点. // #include "framework.h" #include "resource_stud ...
- sqlmap中文手册
Sqlmap中文手册 -Darren制作 零.前言 Sqlmap是十分著名的.自动化的SQL注入工具.为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文.由于我英语 ...
- SpringBoot—单元测试模板(controller层和service层)
介绍 概述 在开发过程中,我们经常会一股脑的写各种业务逻辑,经常等全部大功告成的时候,打个jar包放环境里跑跑看看能不能通,殊不知在各个业务方法中已经漏洞百出,修复一个打一个包,再继续修复,这种效 ...
- Java并发编程 (一) 导读
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.并发编程相关技术栈 1.内容主要为高并发的解决思路与手段,具体涉及: 2.涉及的基础知识与核心知 ...
- 结合 AOP 轻松处理事件发布处理日志
结合 AOP 轻松处理事件发布处理日志 Intro 前段时间,实现了 EventBus 以及 EventQueue 基于 Event 的事件处理,但是没有做日志(EventLog)相关的部分,原本想增 ...
- PELT(Per-Entity Load Tracking)
引言 对于Linux内核而言,做一款好的进程调度器是一项非常具有挑战性的任务,主要原因是在进行CPU资源分配的时候必须满足如下的需求: 1.它必须是公平的 2.快速响应 3.系统的throughput ...
- Java实现 LeetCode 835 图像重叠(暴力)
835. 图像重叠 给出两个图像 A 和 B ,A 和 B 为大小相同的二维正方形矩阵.(并且为二进制矩阵,只包含0和1). 我们转换其中一个图像,向左,右,上,或下滑动任何数量的单位,并把它放在另一 ...
- Java实现 蓝桥杯 算法训练 天数计算
试题 算法训练 天数计算 问题描述 编写函数求某年某月某日(**** ** **)是这一年的第几天 .提示:要考虑闰年,闰年的2月是29天(闰年的条件:是4的倍数但不是100的倍数,或者是400的倍数 ...
- Java实现 LeetCode 551 学生出勤记录 I(暴力大法好)
551. 学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个 ...