来源:自学PHP网 时间:2015-04-17 10:15 作者: 阅读:次
[导读] 当php代码有bug的时候会给出一个错误或警告,比如调用了一个未定义的函数:Fatal error: Call to undefined function xxx() in D: sites 123 php on line 2。比较常见的还有:1、sql注入报错2、函数参...
当php代码有bug的时候会给出一个错误或警告,比如调用了一个未定义的函数:Fatal error: Call to undefined function xxx() in D:\sites\123.php on line 2。比较常见的还有:
1、sql注入报错
2、函数参数格式不符合(discuz之前有个漏洞就是给preg_match的第二个string类型参数传一个数组导致出错)
3、包含一个不存在的文件
等等
这里提两个新思路:
1、超长sql语句导致查询出错。
我们知道mysql接受的信息有个最大长度限制,通过show variables like “%max_allowed_packet%”,默认是1M。当我们构造超过1M的sql语句便会导致sql语句执行出错,从而得到物理路径。看个例子,假如有下面一段php代码:
<?php $con = mysql_connect("localhost", "root", "root"); if (!$con) { die('Could not connect: ' . mysql_error()); } $db_selected = mysql_select_db("test", $con); $str = addslashes($_POST['str']); $sql = "SELECT * from test WHERE str = '".$str."'"; $result = mysql_query($sql,$con); print_r(mysql_fetch_row($result)); mysql_close($con); ?> 我们给传一个1024*1024(1M)大小的数据给str,执行得到:Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\sites\123.php
2、php执行超时
php脚本有个超时时间,默认是30s,配置文件格式如下:
max_execution_time = 30 ; Maximum execution time of each script, in seconds
如果一个脚本执行超时,便会给出一个错误,从而得到物理路径:Fatal error: Maximum execution time of 30 seconds exceeded in D:\sites\123.php
举个例子:
<?php $arr = split(",", $_POST['files']); foreach($arr as $file) { file_get_contents($site); } ?>
我们给post数据传多个网站url,比如http://www.sucure.net,http://www.baidu.com,。。。;
网络连接耗时会比较长,增加网站url的数量,很容易30s超时。不过这个场景可能有点牵强,不过超时应该还是会有很多其他场景的。
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com