polar ctf靶场之写shell

1.代码分析

使用`highlight_file(__FILE__);`高亮显示当前文件。

使用`file_put_contents`将数据写入文件。具体来说,它从GET参数获取文件名,从POST参数获取内容,并在内容前面加上`"<?php exit();"`,然后将整个字符串写入文件。

<?php exit();,导致后续代码无法执行。

2.攻击原理

要绕过文件写入时的限制(file_put_contents 在内容前添加 <?php exit();),可以利用 PHP 的过滤器(php://filter)配合 Base64 解码破坏前缀的 PHP 代码结构。

3.攻击步骤

(1)构造 WebShell 代码

<?php eval($_POST['a']);
Base64 编码后:PD9waHAgZXZhbCgkX1BPU1RbJ2EnXSk7

(2)计算有效字符并填充

<?php exit(); 的有效 Base64 字符:p, h, p, e, x, i, t(共 7 个),填充 1 个 Base64 字(如 a),使总有效字符数为 8(满足 Base64 解码的 4 字节对齐)。

(3)设置GET 的 filename 参数值

convert.base64-decode:启用 Base64 解码过滤器,这是绕过 <?php exit(); 限制的关键。

resource=shell.php:最终写入的文件名(可自定义)。

(4)用蚁剑连接上传的shell.php文件,找到flag值。

Base64 解码对齐:填充字符(如 a)确保 <?php exit(); 解码后变为乱码,无法执行。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值