2022 工业互联网 CTF 一道WEB;

# 0x01、考点

  • file_get_content fuzzing内容文件读取;
  • $_GETinclude_once本地文件包含。

# 1x01、绕过

给出的url主页面有一个链接指向到read.php?Book=ZGRsLnR4dA==,是ddl.txtBase64编码,尝试了一些Linux下的绝对路径文件Base64 payload

页面提示回显book/Base64 payload不存在

  • 根据提示read.php应该读取的是book目录下文件,查看了一下book目录,发现中间件开启了auto_index,只有一个文本文件;
  • 尝试目录穿越payload,具体提示忘了,即猜测对../做了一些操作。

于是尝试了:../url编码、双写绕过,发现双写绕过/read.php?Book=Li4uLy4vcmVhZC5waHA=可以读取:

IMG_2042.png

我们可以看到操作代码:

str_replace(array("../", "..\""), "", $file)

# 2x01、hint

进一步使用组合爆破:Base64(..././..././..././ + 文件路径)发现:.bash_history文件:

cd /var/www/ctf/
ls
cd V72J1dn23wjFrq
cat *.php

我们可以看到文件中的hint,而且根据1x01章节我们直接访问urlhttp://eci-2zeblmhade5fptwofhr8.cloudeci1.ichunqiu.com/V72J1dn23wjFrq/可以直接看到demo.php文件

直接读取:

<?php
error_reporting(0);
$file= $_GET['ops'];
$file = str_replace(array("../", "..\""), "", $file);
include_once($file);	
?>

# 3x01、文件包含

基本步骤:

  1. ops=file:///etc/passwd读取相关文件,找到日志路径;
  2. 日志文件写入webshell
  3. 过程2可以参考文件[1]

不过当时时间较为紧张,暂未完成这一步,有些遗憾。

参考