CTF中常见的PHP函数漏洞

本文详细介绍了CTF中常见的PHP函数漏洞,包括弱类型比较、MD5 compare漏洞、ereg函数的00截断、变量覆盖、strcmp的误判、is_numeric的漏洞、preg_match的正则绕过、parse_str的变量注入、intval的非数字处理以及serialize和unserialize的安全风险。通过这些实例,揭示了PHP函数在安全方面的潜在问题。
摘要由CSDN通过智能技术生成

1.弱类型比较

2.MD5 compare漏洞

PHP在处理哈希字符串时,如果利用”!=”或”==”来对哈希值进行比较,它把每一个以”0x”开头的哈希值都解释为科学计数法0的多少次方(为0),所以如果两个不同的密码经过哈希以后,其哈希值都是以”0e”开头的,那么php将会认为他们相同。 

常见的payload有

0x01 md5(str)

    QNKCDZO

    240610708

    s878926199a

    s155964671a

    s214587387a

    s214587387a

0x02 sha1(str) 

   sha1('aaroZmOk')  

    sha1('aaK1STfY')

    sha1('aaO8zKZF')

    sha1('aa3OFF9m')

 

同时MD5不能处理数组,若有以下判断则可用数组绕过

if(@md5($_GET['a']) == @md5($_GET['b']))

{

    echo "yes";

}
http://127.0.0.1/1.php?a[]=1&b[]=2

 

现在更厉害了…自从王小云教授提出了MD5碰撞之后这个就成了大热门,现在网上流传一个诸多密码专家写的MD5碰撞程序,是根据一个文件,然后填充内容生成两个MD5值一样的文件(有一定失败率其实),然后生成的内容MD5就相同了…强网杯签到题,简直震惊…软件是fastcoll_v1.0.0.5,自行下载吧

 

3.ereg函数漏洞:00截断

ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE

字符串对比解析 

在这里如果 $_GET[‘password’]为数组,则返回值为NULL ,null!=false

如果为123 || asd || 12as || 123%00&&&**,则返回值为true ,%00直接截断

其余为false

ereg()区分大小写,eregi()不区分大小写

 

4.$key是什么?

别忘记程序可以把变量本身的key也当变量提取给函数处理。

<?php

    print_r(@$_GET); 

    foreach ($_GET AS $key => $value)

    {

        print $key."\n";

    }

?>

5.变量覆盖

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值