ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pikachu--(htmlspecialchars、href和js输出)

2020-02-19 16:05:26  阅读:352  来源: 互联网

标签:xss 123 输出 pikachu htmlspecialchars href ENT js


XSS-htmlspecialchars

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

预定义的字符:       预防: 可用的引号类型:(一般使用这个函数时候要指定类型)

&转换为&amp                 ENT_COMPAT 默认,仅编码双引号

转换为&quot               ENT_QUOTES 编码双引号和单引号(xss漏洞是因为指定类型时候的疏忽)

转换为&#039               ENT_NOQUOTES 不编码任何引号

<转换为&lt       

>转换为&gt

 

下面采用xss漏洞的测试方法进行操作,可以参考我之前博客https://www.cnblogs.com/7-58/p/12317111.html

 输入带有特殊字符的和唯一标识符   '"<>666

 

 

查看网页源代码

 

 

发现只有单引号没有被转换

我们构造    a' onclick='alert(123)'           成功弹框

 

 

可以看一眼,pikachu源码  使用函数,默认不对类型进行处理(没有指定类型)

 

 

Xss- href输出

这里href里面如果做输出的话,应该怎么处理?

在输入时候只允许是http,https协议的才允许在这输出,否则的话就不允许输入。之后再进行htmlspecialchars函数过滤。

 

 

先看一下pikachu的源码   这次利用函数,设置了类型 ENT_QUOTES对单引号、双引号、尖括号等过滤

 

 

构造   因为对那些符号进行了过滤,输入   javascript:alert(111)

 

Xss-js输出

这里讲输入动态的生成到了js中,形成xss

javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义

 

讲这个例子主要是为了明白,输出点在js中的xss问题,应该怎么修?

这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后的内容,在JS里面不会进行翻译,这样会导致前端的功能无法使用。

所以在JS的输出点应该使用\(反斜杠)对特殊字符进行转义

 

 

查看网页源代码    发现是把对应的输入放在了js里面,进行判断,在进行相应的输出

 

 

 

我们把这段拿出来

<script>

    $ms='123';

    if($ms.length != 0){

 。。。。。。

</script>

 

将前面<script>$ms='123';构造闭合

<script>$ms='123’</script><script>alert(‘xss’)</script>';

’</script><script>alert(‘xss’)</script>

 

 

弹框

 

标签:xss,123,输出,pikachu,htmlspecialchars,href,ENT,js
来源: https://www.cnblogs.com/7-58/p/12331632.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有