html中给%3cb%3e加上颜色,跟bWAPP学WEB安全(PHP代码)--HTML注入和iFrame注入

背景

这里讲解HTML注入和iFrame注入,其他的本质都是HTML的改变。那么有人会问,XSS与HTML注入有啥区别呢?其实本质上都是没有区别的,改变前端代码,来攻击客户端,但是XSS可以理解为注入了富文本语言程序代码,而HTML注入只注入了超文本标记语言,不涉及富文本程序代码的问题。这里的iframe注入实际上就是一个阅读器,可以阅读通过协议加载的活服务器本地的文件。

HTML注入

在这里不在区分GET和POST,没有任何意义,只看一下反射和存储。

没有防御--简单级

092725ddda222f6acc3bc6cd150b5071.png

02cbfb6a40735e6a4c002fbfe5fc7655.png

一般防御--中等级

直接编码就可以绕过,不编码会被转义成HTML实体字符

d46895751d06897835944584d149c13c.png

56da7562ccc564a647c19e5712c223f8.png

完善防御--高等级

安全

代码分析

function htmli($data)

{

switch($_COOKIE["security_level"])

{

case "0" :

$data = no_check($data);

break;

case "1" :

$data = xss_check_1($data);

break;

case "2" :

$data = xss_check_3($data);

break;

default :

$data = no_check($data);

break;;

}

return $data;

}

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;

}

function xss_check_2($data)

{

// htmlentities - converts all applicable characters to HTML entities

return htmlentities($data, ENT_QUOTES);

}

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);

}

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);

}

函数xss_check_1只过滤<>转移为HTML实体,但是对编码的解码放在了后面,如果把编码解码放前面呢就可以也过滤了,我们来试试。

function xss_check_1($data)

{

// Converts only "" to HTLM entities

$input = urldecode($input);

$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;

}

2468a30dee87c608b68d6e27bb420613.png

bbb121075ebad90ce4bfb6cfbfd1f27a.png

xss_check_3这个函数则使用了htmlspecialchars函数能转移编码后的实体,他的作用很大,能很好的防御这类攻击。而存储型的在中级和高级难度中都使用了这个函数,所以只有初级才可以把存储的信息直接输出到页面。

iFrame 注入

在这里可以成为阅读器(www目录下所有静态文件的阅读器)和跳转和一个可以诱导客户访问某站点的一个点,利用:大小size设置为0时可以理解为无交互的刷访问、前端挖矿、挂黑链、诱导下载等等。

现象

a06f3f84cd291f318c7fd85a6e628bc5.png

638f7aaa20ba3032526121d0fd2e9f51.png

代码分析:

if($_COOKIE["security_level"] == "1" || $_COOKIE["security_level"] == "2")

{

?>

" width="<?php echo xss($_GET["ParamWidth"])?>">

}

else

{

?>

" height="<?php echo xss($_GET["ParamHeight"])?>" width="<?php echo xss($_GET["ParamWidth"])?>">

}

?>

可以看到,当最低级的事后iframe位置可控,中高级则写死,不可控,则无法利用。又因为height和width两个参数,想构造XSS需要闭合",在xss_check_3过滤了",所以高级没戏,中、低级的确实可以。

4748abae4c09faa85f91eed01086f404.png

89c780ba351ed0b3e182aa2b491345b1.png

79ebc60636d1f85055ba77feca508795.png

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

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

跟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;--PHP代码注入

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

跟bWAPP学WEB安全&lpar;PHP代码&rpar;--XSS跨站脚本攻击

背景 这个系列有很多题,但是其实考察的相近,类似的就不在多说,我们来看吧.主要分几个点来讲: 反射型 存储型 JSON XM 头部字段相关 分类介绍 反射型 在请求中构造了XSS的Payload,一般 ...

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

XML/Xpath注入 看了下,A2里面是认证与会话管理的破坏或称之为绕过,没有特别要写的,很多就是小问题,可能会将这类问题放在最后写一下.一篇博客,这里还是更多的着重在能够获取信息或者服务器权限的漏 ...

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

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

随机推荐

win8 app内存溢出检测工具PerfView&period;exe的使用

PerfView使用教程:https://msdn.microsoft.com/en-us/magazine/jj721593.aspx PerfView下载地址:https://www.micros ...

Ruby基本类型

#!/usr/bin/ruby =begin Ruby支持的有5种类型的变量 全局变量:以$开头 未初始化的全局变量的值为0 并使用-w选项产生警告 全局变量的赋值会改变全局状态 不推荐使用全局变量  ...

Java 基本数据类型长度

System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE)); //内存溢出System.out.println(Integer.MAX_VAL ...

真实的C&plus;&plus;单例模式举例

把构造函数声明为protected的理由很简单,但把构造函数声明为private的原因却很少知道.   从语法上讲,任何函数如果被声明为private,这个函数就不能从外部调用,构造函数也是函数,相反 ...

u-boot和linux的机器码

先看u-boot的机器码和linux的机器码是在什么地方决定的. 1. u-boot的机器码是在u-boot的board/fs2410/fs2410.c文件里决定的:     /* arch numb ...

dumpbin&period;exe

有时候我们想查看一个exe引用了哪些动态库,或者我们想看某个动态库包含哪些接口函数,这个时候可以使用dumpbin.exe工具: 1.输入Dumpbin -imports calldll.exe查看它 ...

其他应用和技巧-用JS实现的抽奖程序

--------------------------------

&lbrack;转&rsqb;Jquery 点击图片在弹出层显示大图

这个还行不需要别的包! https://www.cnblogs.com/antis/p/7053991.html

oracle乱码记录

plsql中显示正常,查询到的结果乱码 1.获得服务端编码 select * from nls_database_parameters where parameter ='NLS_CHARACTERS ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值