• PHP安全特性


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

    1. 缺陷:当不是数字的字符串与数字互相比较,is_numeric()会自动的先把非数字型的数转换成数字,在进行比较。
    2. 利用:在现在数字之后,如果使用该函数,则可以通过把数字改写成字符串便可
    3. 2-Hash的比较缺陷
    4. md5解密之后,得到0e开头的字符串之后,但是MD5的值会直接吧0e当做科学计数法,看成了0e的多少次幂,但是依旧为0 。因此以此绕过MD5验证
    5. 0e开头的MD5值汇总
    6. QNKCDZO 0e830400451993494058024219903391
    7. 240610708 0e462097431906509019562988736854
    8. s878926199a 0e545993274517709034328855841020
    9. s155964671a 0e342768416822451524974117254469
    10. s214587387a 0e848240448830537924465865611904
    11. s214587387a 0e848240448830537924465865611904
    12. s1091221200a 0e940624217856561557816327384675
    13. sha1加密后以0e开头的字符串
    14. sha1(‘aaroZmOk’)
    15. sha1(‘aaK1STfY’)
    16. sha1(‘aaO8zKZF’)
    17. sha1(‘aa3OFF9m’)

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

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

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

    5-extract()变量覆盖

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

    6-strcmp()比较字符串

    1. strcmp是字符串的比较,str1<str2<0 str1>str2>0 str1=str2时 等于0
    2. 但是如果是数组比较的话,会直接返回NULLif判断使用的是==,所以if(strcmp($pattern,$))。NULL的布尔值为0 。注意逻辑表达

    7-sha1数组绕过

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

    8-进制绕过

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

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

    1. ereg()函数可以绕过姿势-00截断
    2. 数组绕过

    10-X-forword-for

    ip伪造
    

    11-伪协议

    1. file://
    2. php://
    3. zip:// bzip://
    4. data://
    5. http:// https://

    12-变量覆盖漏洞

    1. extract()函数使用不当
    2. parse_str()函数使用不当
    3. import_request_variables()使用不当
    4. $$使用不当
    5. 开启了全局变量注册
  • 相关阅读:
    js验证字符串是否是时间日期格式
    在setup中使用计算属性
    MySql(44)事务的基本认识
    STM32CubeMX学习笔记(2)--DSP库的使用
    分布式精华笔记!带你深入剖析一致性共识算法还不来看?
    1073 Scientific Notation
    冒泡排序与快速排序
    c++新标准有用的语法特性
    SMV 算法【python,机器学习,算法】
    C++初阶(vector容器+模拟实现)
  • 原文地址:https://blog.csdn.net/YJ_12340/article/details/139071181