小迪web自动笔记50

文件包含:

如果想要调用数据库查询,直接用include,这个文件中的代码就会被调用。

无论你是什么格式,都会被当成脚本执行。

有本地包含与远程包含,但是远程包含限制很多,比如直接给你开关限制或者给你过滤关键字。

可以直接执行其他网站的的文件(但是不能包含自己电脑上的文件,所以叫做远程包含。

本地文件

你只能执行本地有的功能,

无文件利用:只能用本地里面的功能。

有文件利用:可以上传一个后门。

1,伪协议

第1个要绝对路径,第2个用相对路径读取。

可以进行跳级操作。

直接读d盘。

*这个伪协议相对路径的机制。

在文件系统和Web应用程序中,绝对路径和相对路径的产生是为了管理和定位文件资源。即使有两个内容一模一样的文件,它们也可能存储在不同的位置,路径就是用来唯一标识这些文件的方法。下面我会详细解释为什么需要绝对路径和相对路径,以及它们在文件包含漏洞中的重要性。

  1. 绝对路径和相对路径的基本概念

· 绝对路径:从文件系统的根目录(如Linux的/或Windows的C:\)开始,指定文件的完整路径。它唯一确定一个文件,无论当前工作目录是什么。

· 示例:/var/www/html/index.php(Linux)或C:\xampp\htdocs\index.php(Windows)。

· 相对路径:从当前工作目录开始,指定文件的相对位置。它依赖于当前上下文,因此可能指向不同的文件,如果工作目录改变。

· 示例:如果当前目录是/var/www/html,那么./config.php指的是/var/www/html/config.php;而../uploads/file.txt则指向/var/www/uploads/file.txt。

  1. 为什么需要绝对路径和相对路径?

· 绝对路径提供了文件的精确位置,确保无论当前目录如何,都能找到正确的文件。这在系统级操作或需要明确指定文件时非常有用。

· 相对路径提供了灵活性,使代码或命令更容易移植。例如,如果一个Web应用程序从开发环境(如/home/dev/project/)迁移到生产环境(如/var/www/),使用相对路径可以避免修改所有文件引用。

  1. 如果有两个一模一样的文件,路径如何区分?

即使两个文件内容完全相同,如果它们存储在不同的目录下,它们就是不同的文件实例。路径是区分它们的唯一标识符。例如:

· 文件A位于:/var/www/uploads/log.txt

· 文件B位于:/tmp/log.txt

· 虽然内容相同,但通过绝对路径/var/www/uploads/log.txt和/tmp/log.txt,系统可以明确区分它们。

在文件包含漏洞中,攻击者可以利用路径来包含特定文件:

· 如果应用程序使用相对路径包含文件,攻击者可能通过路径遍历(如../../etc/passwd)访问敏感文件。

· 如果应用程序使用绝对路径,攻击者可能直接指定系统文件路径(如/etc/passwd)来读取数据。

  1. 在文件包含漏洞中的实际影响

在远程文件包含(RFI)或本地文件包含(LFI)漏洞中,路径的选择至关重要:

· 绝对路径:允许攻击者直接指向系统关键文件(如/etc/passwd),但可能被应用程序限制或过滤。

· 相对路径:攻击者常使用路径遍历技术(如../)来"跳出"当前目录,访问其他目录下的文件。例如,如果应用程序包含include($_GET['file']),且当前目录是/var/www/html,那么file=../../etc/passwd可能成功包含系统文件。

如果有两个一模一样的文件(比如一个正常文件和一个恶意文件),攻击者可以通过指定不同的路径来选择包含哪一个:

· 例如,如果应用程序有上传功能,攻击者上传一个恶意文件到/var/www/uploads/shell.php,然后通过LFI包含它:file=uploads/shell.php。

· 同时,系统可能有一个正常文件/usr/lib/legit.php,但通过路径,攻击者可以避免包含它。

  1. 为什么会产生路径问题?

路径问题的根源在于应用程序如何处理用户输入的文件路径。如果应用程序未正确验证或 sanitize 用户输入,攻击者可以操纵路径来包含未授权的文件。常见问题包括:

· 缺乏输入验证:允许用户输入绝对路径或包含../的相对路径。

· 错误的路径拼接:将用户输入直接与基础路径拼接, without checking for path traversal.

· 服务器配置不当:如allow_url_include开启,允许远程包含。

总结

绝对路径和相对路径是文件系统的基本组织方式,用于唯一标识文件。在文件包含漏洞中,路径是攻击者的关键工具,用于访问敏感文件或执行恶意代码。即使有两个一模一样的文件,路径也能确保它们被正确区分。因此,在开发Web应用程序时,必须严格验证用户输入的路径,避免使用用户输入直接包含文件,或使用白名单机制限制可包含的文件。

*是以存在文件包含的目录为起点

文件写入:上面有有两种方式。

代码执行:上面也有。

例子

先观察特征,怀疑是文件包含,用file协议构造一下包含一下网站里的php执行,结果真的是。

这道题没有上传点(不能自己构造PHP代码上传),只能通过伪协议读取文件。

这张截图里的 Post data 指的是 HTTP POST 请求的请求体数据,和 URL 中的 GET 参数(直接在地址栏里写 ?key=value )是两种不同的请求数据提交方式。

  1. Post data 是什么?
  • HTTP 请求分为两种常见的提交数据方式:

  • GET:参数直接放在 URL 里(如 ?file=xxx ),会显示在浏览器地址栏。

  • POST:参数放在请求体(Request Body)里,不会显示在地址栏,更适合传递敏感或大量数据。

  • Post data 就是 POST 请求体里的内容。

  1. 为什么这里不能直接在 URL 构造?

因为截图里用的是 php://input 伪协议,它的作用是 读取 POST 请求体的数据。

  • 如果直接在 URL 里构造(比如 ?file=xxx ),这是 GET 请求, php://input 是读不到的。

  • 必须用 POST 请求,把数据放在请求体里, php://input 才能读取到内容。

  1. 结合截图里的场景

截图里的 URL 是:

plaintext

http://xxx/?file=php://input

这表示:

  • PHP 代码里的 include($_GET['file']) 会去包含 php://input 。

  • php://input 会去读取 POST 请求体里的内容(也就是截图中 Post data 里的 <?php system('ls');?> )。

  • 这样 PHP 就会执行 POST 数据里的代码(比如 system('ls') )。

  1. 总结
  • Post data 是 POST 请求体里的数据,和 URL 里的 GET 参数是两回事。

  • 这里用 php://input 必须配合 POST 请求体,不能直接在 URL 构造,因为 php://input 是专门读取 POST 数据的。

Get里面的f ILE,并把这里面的东西包含 ,如果里面的内容有PHP直接给你改成三个问号。

文件写入↑

直接写入

可以访问日志(日志包含)

绝对路径执行↓

然后把代码写入再执行日志。

先构造一个读取目录的代码,然后读到文件之后再打开文件。

改包USER AGENT

seSSion包含

这玩意儿是会话会产生在服务器上,一般保存在Tmp目录下。

工具↑

固定会话文件的产生。

在它清空之前马上创建一个新的文件。

Session在包含的那一刹那就会清空所有的东西,我让他触发之前的时候赶紧连接访问创建一个新的文件。

不断发包,不断链接,怎么感觉跟之前的那个有点像?就那个逻辑顺序漏洞?

*SESSION,cookie那个啥开发有点忘了,SESSION好像确实访问了之后创建会话,在另一个文件下保存这个东西(会话允许通过的人的信息,用户登录状态。),然后定期的清理(中小型网站)

有空去看看复习一下前面。

两次编码

主要得看有没有urldecode这个玩意儿,他提前给你解密一次了。

正常浏览器会给你解码一次,你正常两次加密它是解不出东西的,但是有这个东西,它先给你解了一次。

凯撒加密↓

上面这个是关键字符过滤,不让你搞。

然后的话你在编码的时候就得多加几字符让关键字不见

最后一关好像是另一种加密万变不离其本不搞。直接禁你的加密↓

相关推荐
2401_885405518 天前
定位守护童年,科技构筑安全屏障
科技·物联网·安全·小程序·宠物·web app·智能手表
合作小小程序员小小店10 天前
web开发,学院培养计划系统,基于Python,FlaskWeb,Mysql数据库
后端·python·mysql·django·web app
牢七16 天前
小迪web自用笔记59
web app
牢七17 天前
小迪Web自用笔记58
web app
牢七19 天前
小迪web自用笔记55
web app
牢七19 天前
小迪自用web笔记53
web app
牢七20 天前
小迪web自用笔记54
web app
牢七20 天前
小迪Web自用笔记52
web app
牢七21 天前
小迪web自用笔记49
web app