Upload To rce 安洵杯2019 这不是上传

0X0A
首先我们大致审计一下 三个源码文件
upload.php  上传页面 inlculde了helper extend了里面的helper 类型 大致是一个上传文件的函数
判断文件是否上传成功 如果失败则重新上传
再来看看helper里面的函数 看到了经典的反序列化magic _destruct()调用了 view_files 方法
view_file里面file_get_content函数可以造成rce或者任意文件读取
那么调用在哪里呐??
https://www.kancloud.cn/webxyl/php_oop/68881
我们看到show.php的unserialize
str_replace
因为private 私有变量表示前面有* 但是你burp发过去的包进数据库时候没有经过数据处理 但是出来的时候经过了
数据的处理的 所以我们进去的时候也要假装经过数据处理过
函数介绍
https://www.w3school.com.cn/php/func_string_substr.asp

0x01
$_FILES[]
这里调用的$_FILES[$INPUT]前面定义成了file
PHP编程语言中的常见的$_FILES系统函数用法有:
$_FILES[‘myFile‘][‘name‘] 显示客户端文件的原名称。
$_FILES[‘myFile‘][‘type‘] 文件的 MIME 类型,例如"image/gif"。
$_FILES[‘myFile‘][‘size‘] 已上传文件的大小,单位为字节。
$_FILES[‘myFile‘][‘tmp_name‘] 储存的临时文件名,一般是系统默认。
$_FILES[‘myFile‘][‘error‘] 该文件上传相关的错误代码。一下为不同代码代表的意思:
0x02
getimagesize
getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条
<?php
list($width, $height, $type, $attr) = getimagesize("youj-logo.png");
echo "宽度为:" . $width;
echo "高度为:" . $height;
echo "类型为:" . $attr;
?>
0x03
https://www.w3school.com.cn/php/func_string_substr.asp
substr
substr(string,start,length)
strrchr
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
https://www.w3school.com.cn/php/func_string_strrchr.asp
<?php
echo strrchr("2.jpg",".");>>.jpg
?>
0x04
implode explode
分割数组为字符串
0x05
fetch_assoc
函数从结果集中取得一行作为关联数组。

题目源码 github已经开源 这里我们主要注意

在这里造成了反序列化的产生 调用了 helper里面的_des函数不必多说

上面说的很清除了 从这里看出来进入数据库的

只有title是可控制的 其余后缀都加了后嘴名称 所以我们通过title造成file_get_conten漏洞任意操作

正常上传图片的sql语句

正常上传图片的sql语句为:

INSERT INTO images (`title`,`filename`,`ext`,`path`,`attr`) VALUES(‘TIM截图20191102114857‘,‘f20c76cc4fb41838.jpg‘,‘jpg‘,‘pic/f20c76cc4fb41838.jpg‘,‘a:2:{s:5:"width";i:1264;s:6:"height";i:992;}‘)

paloady构造

<?php
class helper {
    protected $ifview = True;
    protected $config = "";
}
$a = new helper();
$b=serialize($a)
echo $b
?>

原文地址:https://www.cnblogs.com/-zhong/p/12397397.html

时间: 2024-10-09 06:10:19

Upload To rce 安洵杯2019 这不是上传的相关文章

刷题记录:[安洵杯 2019]easy_serialize_php

目录 刷题记录:[安洵杯 2019]easy_serialize_php 知识点 PHP反序列化 刷题记录:[安洵杯 2019]easy_serialize_php 题目复现链接:https://buuoj.cn/challenges 参考链接:第二届安洵杯2019部分writeup 知识点 PHP反序列化 payload为_SESSION[phpflag]=;s:1:"1";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==&quo

[安洵杯 2019]easy_web

0x00 知识点 md5强类型的绕过 方法比较固定: POST: a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2 &b=%4d%c9%68%ff%0e%e3%

[安洵杯 2019]easy_serialize_php

0x00 知识点 PHP反序列化的对象逃逸 任何具有一定结构的数据,只要经过了某些处理而把自身结构改变,则可能会产生漏洞. 参考链接: https://blog.csdn.net/a3320315/article/details/104118688/ 过滤函数分为两种情况 第一种为关键词数增加 例如: where->hacker,这样词数由五个增加到6个. 第二种为关键词数减少 例如:直接过滤掉一些关键词,例如这道题目中. 过滤函数filter()是对serialize($_SESSION)进行

2019 安洵杯 Re WP

0x01.EasyEncryption 测试文件:https://www.lanzous.com/i7soysb 1.IDA打开 int sub_416560() { int v0; // eax int v1; // edx int v2; // edx int v3; // ecx int v4; // ST08_4 char v6[4]; // [esp+310h] [ebp-7E0h] char Str; // [esp+700h] [ebp-3F0h] int v8; // [esp+

MP3文件上传UPLOAD控件点击上传部分代码

if (TxtName.Text != null && TxtPublish.Text != null) { SqlConnection myConn = GetCon(); myConn.Open(); ////上传音乐文件的变量 string FilePathMusic = string.Empty;//上传音乐文件的路径 string FileNameMusic = string.Empty;//上传音乐文件名 string FileExtendMusic = string.Empt

转:使用 Nginx Upload Module 实现上传文件功能

普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦.Nginx有一个Upload模块,可以非常简单的实现文件上传功能.此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面.下面和大家具体介绍一下. 一.编译安装Nginx 为了使用Nginx Upload Module,需要编译安装Nginx,将upload module编译进去.upload module的代码可以去Gith

上传文件 file upload 学习笔记

这里我只会说说一些完成 file upload 的基础 API. 很多项目我们需要上传文件. 有简单的 input file, 有需要验证的,有需要压缩的(img),有需要分段的(video),有需要体验好(display on local, ajax & percent) 等等 要完成以上的所有需求,我们需要很多底层的 API, 比如 File, FileReader, Canvas , XMLHttpRequest , Blob 要把这个控件写好的话,需要一些设计模式,不过这篇不会涉及这个,

iview Upload组件多文件上传,以及vue文件下载

iview Upload组件多文件上传 系统经常遇到文件上传的问题,iview提供了Upload组建,能够很好的实现文件上传,当然一次上传多个文件也是允许的. 思路:创建一个数组 把需要上传的文件 push到这个数组里面 1.引用组件 2.手动上传,根据官方文档 设置:before-upload ="handleUpload"等于false (1).:before-upload 是 iview Upload 上传组件的一个属性 设置返回值为 false 可以阻止默认上传方式(自动上传模

关于vue-element-admin的采坑记录-upload组件图片上传问题

个人博客里部分内容用到了图片上传 那就需要用到vue-element-admin中的upload组件 首先我们需要在需要到图片上传的vue文件里引入upload组件 并使用标签的形式使用该组件 通过v-model绑定image属性 <template> <div class="createPost-container"> <Upload v-model="image"/> </div> </template>