banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

cisp-pte的一个文件上传题目

来一题 cisp-pte 中的文件上传题目,需要爆破猜解上传文件的路径

打开题目,如下界面

image

给出了文件上传部分的代码

$filename = $files["name"];
$randnum = rand(1, 99999);
$fullpath = '/' . md5($filename.$randnum).".".substr($filename,strripos($filename,'.') + 1); 

通过代码可知,上传的文件名会经过 md5 加密,加密方式为当前上传的文件名加 1-99999 的随机数,后接一个。文件后缀。

尝试上传文件试试,上传的文件会过滤 eval 等关键词,可以用大写绕过,content-type 需要换成图片格式。

image

上传成功后,但是看不到文件上传后的路径。

根据上传的代码我们可以先上传图片,上传的图片进行 md5 加密,md5 (1.php1).php,图片上传后,由于不知道上传文件的路径,所以需要猜解上传后的文件名,猜解同样是采用 md5 (1.php1).php 的方式。
下面看看具体操作:
1、先将包放到 intruder,填写一个 x-forwarded-for 参数,设置内容为 127.0.0.1,对 1 参数进行遍历。

image

2、接下来设置 payload 选项

Payload type

From:1
To:200
Step:1

image

1-99999 中选 1-200 进行遍历

还需要设置两个值,payload processing,在遍历每个值时,添加 1.php 前缀,也就是上传的文件名,然后对其内容(1.php [1-200])进行 md5 加密。

image

3、上传成功后,大小长度都一样,此时还不知道上传后的文件名是什么,因为 1.php [1-200] 的 md5 值是一样的,所以我们再爆破一次,这次直接请求文件名,/md5 (1.php [1-200]),能成功访问的就是正确的文件名。

image

4、猜解上传后的文件名,直接访问 md5 加密后的内容。

image

Payload 设置和上传文件一致。

image

通过 200 的状态码区分,可以知道上传的文件名如下图中所示。

image

上传成功后,通过蚁剑连接。

image


补充:2023-07-21

上述方法在文件上传处有点啰嗦,此处不需要如此繁琐的设置 payload,下面给出更简单的解法。

1、抓包

image

设置 payload,直接发包即可,此处无需设置别的 payload,null payload 表示重复发送请求。

image

2、接下来开始爆破路径

随意请求一个路径,保留.php

image

payload 设置如下:

image

image

2000 个 payload 可以上传成功多个文件

image

image

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。