shell bypass 403
UnknownSec Shell
:
/
home
/
forge
/
mpc.brannanatkinson.com
/
vendor
/
statamic
/
cms
/
src
/
Fieldtypes
/
Assets
/ [
drwxrwxr-x
]
upload
mass deface
mass delete
console
info server
name :
DimensionsRule.php
<?php namespace Statamic\Fieldtypes\Assets; use Illuminate\Contracts\Validation\Rule; use Statamic\Facades\Asset; use Statamic\Statamic; use Symfony\Component\HttpFoundation\File\UploadedFile; class DimensionsRule implements Rule { protected $parameters; public function __construct($parameters = null) { $this->parameters = $parameters; } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { return collect($value)->every(function ($id) { if ($id instanceof UploadedFile) { if (in_array($id->getMimeType(), ['image/svg+xml', 'image/svg'])) { return true; } $size = getimagesize($id->getPathname()); } else { if (! $asset = Asset::find($id)) { return false; } if ($asset->isSvg()) { return true; } $size = $asset->dimensions(); } [$width, $height] = $size; $parameters = $this->parseNamedParameters($this->parameters); if ($this->failsBasicDimensionChecks($parameters, $width, $height) || $this->failsRatioCheck($parameters, $width, $height)) { return false; } return true; }); } /** * Get the validation error message. * * @return string */ public function message() { return __((Statamic::isCpRoute() ? 'statamic::' : '').'validation.dimensions'); } /** * Parse named parameters to $key => $value items. * * @param array $parameters * @return array */ protected function parseNamedParameters($parameters) { return array_reduce($parameters, function ($result, $item) { [$key, $value] = array_pad(explode('=', $item, 2), 2, null); $result[$key] = $value; return $result; }); } /** * Test if the given width and height fail any conditions. * * @param array $parameters * @param int $width * @param int $height * @return bool */ protected function failsBasicDimensionChecks($parameters, $width, $height) { return (isset($parameters['width']) && $parameters['width'] != $width) || (isset($parameters['min_width']) && $parameters['min_width'] > $width) || (isset($parameters['max_width']) && $parameters['max_width'] < $width) || (isset($parameters['height']) && $parameters['height'] != $height) || (isset($parameters['min_height']) && $parameters['min_height'] > $height) || (isset($parameters['max_height']) && $parameters['max_height'] < $height); } /** * Determine if the given parameters fail a dimension ratio check. * * @param array $parameters * @param int $width * @param int $height * @return bool */ protected function failsRatioCheck($parameters, $width, $height) { if (! isset($parameters['ratio'])) { return false; } [$numerator, $denominator] = array_replace( [1, 1], array_filter(sscanf($parameters['ratio'], '%f/%d')) ); $precision = 1 / (max($width, $height) + 1); return abs($numerator / $denominator - $width / $height) > $precision; } }
© 2026 UnknownSec