Moctf死亡退出Write up

在这里插入图片描述
一开始就看到了源码,萌新表示大致看得懂什么意思,大致分析下:
第四行@$ c.=$ _POST[‘c’]; //@为屏蔽错误不显示在浏览器界面,$ _POST[‘c’]是以post的方式获取字符串类型的变量c,".="表示变量c会与之前变量中的<?php exit;?>进行字符串连接。很显然题目需要我们以post的方式提交变量c使<?php exit;?>失效。
@$filename = $_POST[‘file’];同理我们以post方式提交一个字符串的变量file,赋值给filename。
后面if判断,如果我们没有以post提交filename,就会运行空的tmp.php,否则就会把c的内容写入filename文件中并运行。
后来百度了一下,好像涉及php的filter协议,看了一下大佬的博客(https://www.leavesongs.com/PENETRATION/php-filter-magic.html),似懂非懂,
在这里插入图片描述

原理:
通过上传字符串变量c,通过<?php exit;?>与变量c连接破坏掉语句结构;同时变量c也需要写入到变量filename这个文件中通过执行获得flag。
在包含HTML、PHP语言的的网页中,通常会在进行解析XML将PHP的<??>语法当作为XML,而导致解析错误。为了防止这样的错误产生,php引入了php://filter协议流,通过该协议流可以将php的代码经过base64再编码一遍来避免此类冲突的产生。
可以巧妙运用base64解码的过程,将需要执行的php代码使用base64上传,再利用php:filter协议流进行base64解码执行。
base64解码过程会将

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值