PHP安全特性

1-is_numeric()类型的转换缺陷 验证函数是否为数字的函数

缺陷:当不是数字的字符串与数字互相比较,is_numeric()会自动的先把非数字型的数转换成数字,在进行比较。
利用:在现在数字之后,如果使用该函数,则可以通过把数字改写成字符串便可



2-Hash的比较缺陷
    
    md5解密之后,得到0e开头的字符串之后,但是MD5的值会直接吧0e当做科学计数法,看成了0e的多少次幂,但是依旧为0 。因此以此绕过MD5验证

        0e开头的MD5值汇总
            QNKCDZO           0e830400451993494058024219903391
            240610708          0e462097431906509019562988736854
            s878926199a   	 0e545993274517709034328855841020
            s155964671a      0e342768416822451524974117254469
            s214587387a      0e848240448830537924465865611904
            s214587387a      0e848240448830537924465865611904
            s1091221200a    0e940624217856561557816327384675

        sha1加密后以0e开头的字符串
            sha1(‘aaroZmOk’)
            sha1(‘aaK1STfY’)
            sha1(‘aaO8zKZF’)
            sha1(‘aa3OFF9m’)

3-parse_str()覆盖缺陷 作用是解析字符串并注册成变量,但是在注册之前不会在意变量是否已经存在,而是直接覆盖掉已经有了的变量

利用:直接将已经有的变量覆盖成可控的内容

4-switch绕过 结合代码分析,需要执行switch里面的某个分支,如果switch是整数型的case的判断时,switch会自动将参数转化成为int型

5-extract()变量覆盖

函数从数组中将变量导入到当前的符号中,该函数使用数组键名作为变量名,使用数组作为变量值。针对数组中的每个元素,将在当前符号表中创建的对应变量,这个函数就会成功返回设置的变量数。

6-strcmp()比较字符串

strcmp是字符串的比较,str1<str2 则<0   str1>str2 则>0  str1=str2时 等于0

但是如果是数组比较的话,会直接返回NULL。if判断使用的是==,所以if(strcmp($pattern,$))。NULL的布尔值为0 。注意逻辑表达

7-sha1数组绕过

===数据和类型完全相同,sha1默认的参数输入为字符串,所以当输入的数据为数组时,返回false,sha1(name[]=1)==false=sha2(password[]=2)

8-进制绕过

已经整数比较相等,转换进制后与原数相比较

9-ereg() strpos()函数绕过

ereg()函数可以绕过姿势-00截断

数组绕过

10-X-forword-for

ip伪造

11-伪协议

file://
php://
zip:// bzip:// 
data://
http://  https://

12-变量覆盖漏洞

extract()函数使用不当

parse_str()函数使用不当

import_request_variables()使用不当

$$使用不当

开启了全局变量注册
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值