html option怎么显示%3c符号,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击

本文详细探讨了XSS攻击的反射型、存储型、JSON和XML类型,涉及头部字段利用,防御函数如HTML实体转义和编码,以及实际的绕过技巧。从bWAPP示例出发,讲解了Web安全中XSS的实战应用和防御策略。
摘要由CSDN通过智能技术生成

背景

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

反射型

存储型

JSON

XM

头部字段相关

分类介绍

反射型

存储型

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

778c0a8baf5b72b655213c21074349c6.png

98f78f0a14f1de5885d1f9537deecb11.png

JSON型

没有什么太大的不同,注意构造一下Payload,闭合标签即可,Payload:"

8dcf9b210281ea0f81d0a7254f6b68ac.png

3ed590e73c0647bf45a30110d964f730.png

XML型

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

例如,这样

<img src=1 οnerrοr="alert(document.cookie)">

1a833c0903aae164a094c1f0b8a0a732.png

头部字段相关

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

XSS防御函数、过滤、绕过

防御函数

//单纯过滤<>,对编码都没有检测,所以做一个url编码就绕过了。

function xss_check_1($data)

{

// Converts only "" to HTLM entities

$input = str_replace("

$input = str_replace(">", ">", $input);

// Failure is an option

// Bypasses double encoding attacks

//

// %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 '&'

// '"' (double quote) becomes '"' when ENT_NOQUOTES is not set

// "'" (single quote) becomes ''' (or ') only when ENT_QUOTES is set

// '

// '>' (greater than) becomes '>'

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

//绕过过滤单双引号的

1

//伪协议

//绕过关键字检查,大小写变化和无意义(注释、空字符、空格、回车、tab)截断

link//规避关键字

//长度限制

//绕过尖括号检查,编码、多重编码

%3cscript%3ealert(1)%3c%2fscript%3e

//标签检查,一重去除标签

ipt>alert("XSS")ipt>

/*闭合标签

>

'> 或者 ">

' 或者 "

标签闭合

*/

//终极过滤

可以进行xss的标签

...

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--HTML注入和iFrame注入

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

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

前言 以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了. 前几天我们收到了了一份标题为的报告文档,来源是 ...

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--终结篇:文件目录遍历、文件上传、SSRF、CSRF、XXE、文件包含

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--OS命令注入

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--认证绕过与会话管理

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--SQL注入的一些技巧

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--SSL&lpar;Server-Side-Include&rpar;漏洞

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--PHP代码注入

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--邮件头和LDAP注入

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

随机推荐

在mvc中实现图片验证码的刷新

首先,在项目模型(Model)层中建立一个生成图片验证码的类ValidationCodeHelper,代码如下: public class ValidationCodeHelper { //用户存取验 ...

Kerberos的组件和术语&lpar;翻译和注解&rpar;

之所以要翻译这篇文章,是因为提到了一些通常于对Kerberos协议简介性质的文章所没有提到的细节,而这些细节对于理解Kerberos的工作原理,以及Kerberos协议实现的使用都是很有必要的. 1. ...

spring事务注解

@Transactional只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能. Spring使用声明式事务处理,默认 ...

C&plus;&plus;11新特性&lpar;3&rpar; lambda表达式&lpar;1&rpar;

C++11加入了一项名为lambda表达式的新功能.通过这项功能能编写内嵌的匿名函数,而不必编写独立函数或函数对象,使得代码更加理解. lambda表达式包括下面部分. [capture_block] ...

SQL排序 空值的后面

按sort排序,sort为空的在后面 end),sort

Ubuntu 11&period;10 Server下搭建Maven私服

安装Nexus服务的文档可以参考官方站点:http://www.sonatype.com/books/nexus-book/reference/install-sect-install.html ...

Unable to launch the IIS Express Web server

尝试运行程序,出现此异常提示Unable to launch the IIS Express Web server. 解决问题,是把网址修改为另一个试试: 把http://localhost:1114 ...

Python环境搭建详解&lpar;Window平台&rpar;

前言 Python,是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软件,Python语法简洁清晰,特色是强制用空白符作为语句缩进,具有丰富和强大的库,它常被称为胶水语言. Python是一种解 ...

POJ - 2635 E - The Embarrassed Cryptographer

The young and very promising cryptographer Odd Even has implemented the security module of a large s ...

nginx&comma;gunicorn常用命令

nginx 启动: 在下载nginx的目录下直接输入nginx回车 停止: nginx -s stop 重启: nginx -s reload 查看当前运行进程: ps -ef | grep ngin ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值