修改文件名实现目录跳跃的思考


这个知识点一直都是似懂非懂,今天正式回顾一下:

…/是作为状态码被理解还是解析的时候进行了跳转?

再linux中使用一下命令:

cd tmp
mkdir 123
mkdir ../321

我们会发现在tmp目录下新建了一个123的文件,在tmp的上层目录新建了一个321的文件
在这里插入图片描述

这里我们猜测是因为文件名中包含了 "…/"这个条约字符串导致的
接下来我们直接修改文件名看看会有什么反映:

mv命令这里会出现一点分歧:
在这里插入图片描述
原因: 因为mv又修改文件名和移动文件的意思,而我又修改了文件名且包含…/ ,所以这里应该是被理解成了移动文件
所以使用mv修改文件名失败(!!!!之前我记得是可以修改的 会显示无法读取文件的状态之类的错误!!!
试试直接修改:
在这里插入图片描述

总结:

关于文件名包含…/字符能否实现目录跳跃,这里个人相信是可以实现的,无论是mkdir …/123.txt ,不管这个…/被理解成状态还是…/123.txt整体被理解成了文件名,都应该是由于文件名包含…/导致解析的问题。
!!!
依稀记得看过一篇文章,使用01editor修改文件名使之包含…/实现目录条约,有兴趣的同学可以去看一下
综上我认为其实我们如果说可以定义一个文件名为…/的话,那么这个文件会自动条约到上一层目录,但是具体为什么,我个人的理解是:创建一个文件夹 相当于命令mkdir , 既然命令mkdir …/test.txt 可以实现一个目录条约,那么创建一个…/test.txt的时候也可以实现目录条约
还是那句话 01editor可以修改文件名为…/test.txt 当时这个是实现了目录穿越的

关于file_put_content实现目录穿越的一点东西:

file_put_contents实现目录跳跃:

<?php 
	$path="../path123.txt";
	$data="test";
	file_put_contents($path,$data);
	highlight_file(__file__);

在上层目录下创建了一个ppath123.txt
更改一下路径:

<?php 
	$path="/../path123.txt";
	$data="test";
	file_put_contents($path,$data);
	highlight_file(__file__);

依然在上层目录下创建了文件
继续修改一下:

<?php 
	$path="sdsada";
	$data="test";
	file_put_contents($path,$data);
	highlight_file(__file__);

在当前目录下创建了sasada文件
继续修改

<?php 
	$path="sdsada/../path123.txt";
	$data="test";
	file_put_contents($path,$data);
	highlight_file(__file__);

依然是当前文件下创建 至于为什么 理解一下/…/就懂了
继续修改:

<?php 
	$path="sdsada/../../path123.txt";
	$data="test";
	file_put_contents($path,$data);
	highlight_file(__file__);

在上层目录下创建了一个path123.txt的文件
因此我们在一些CTF比赛题目中可以使用这个方法实现目录穿越写文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值