文章目录
web78
打开题目就看到源码
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
include($file);
}else{
highlight_file(__FILE__);
}
通过get接收一个file,然后通过include包含进来。
通过尝试,我们发现网站根目录下就有flag.php,只不过内容不显示。
而访问flag.txt或者flag.html则直接报错没有这个文件。
那我们便可以通过php://filter伪协议获取源代码
php://filter/convert.base64-encode/resource=flag.php

然后找一个解码工具解码

web79
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
include($file);
}else{
highlight_file(__FILE__);
}
这一次它对file进行了过滤,过滤了php。我们尝试读取日志文件,然后包含日志文件。(也可以使用data伪协议,或者大小写绕过)
先随便抓一个包,看看中间件是什么,才能知道日志文件在哪

可以看到中间件是nginx,而nginx的日志文件存放在
/var/log/nginx/access.log
直接读取一下

发现是能读到日志文件的,那我们尝试往日志文件中注入一句话木马,就写在User-Agent里。

然后尝试使用蚁剑连接

然后查看flag.php获得flag

web80
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
$file = str_replace("data", "???", $file);
include($file);
}else{
highlight_file(__FILE__);
}
可以看到将php和data都过滤了。尝试直接读取一下日志文件

还是跟上题一一样,尝试往日志文件中写入木马,然后用蚁剑连接

后面查看师傅们的wp发现其实可以用大小写绕过(不过好像只能PHP://input)
下面尝试使用大小写绕过解题

web81
<?php
if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);

&spm=1001.2101.3001.5002&articleId=150420411&d=1&t=3&u=071b37a44a63449ab64ba6993bf4b498)
958

被折叠的 条评论
为什么被折叠?



