CTFSHOW-Web入门-文件包含(web78-web88,web116,web117)

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

image-20250420100216599

然后找一个解码工具解码

image-20250420100236789

web79

<?php

if(isset($_GET['file'])){
   
   
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
   
   
    highlight_file(__FILE__);
}

这一次它对file进行了过滤,过滤了php。我们尝试读取日志文件,然后包含日志文件。(也可以使用data伪协议,或者大小写绕过)

先随便抓一个包,看看中间件是什么,才能知道日志文件在哪

image-20250420104852967

可以看到中间件是nginx,而nginx的日志文件存放在

/var/log/nginx/access.log

直接读取一下

image-20250420105029361

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

image-20250420105122568

然后尝试使用蚁剑连接

image-20250420105217089

然后查看flag.php获得flag

image-20250420105242924

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都过滤了。尝试直接读取一下日志文件

image-20250421160253035

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

image-20250421160542827

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

下面尝试使用大小写绕过解题

image-20250421161330367

web81

<?php


if(isset($_GET['file'])){
   
   
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值