Vlu-VP

Combine

  1. 发现 文件读取 点,随便试试,发现过滤了 ../ ,想办法读取敏感文件,后来发现只是对类似敏感字符进行一次替换而不是拦截,所以用类似于 ..././ 的复写绕过。
  2. 通过读取目录 etc/passwd 得到存在敏感目录 ctf,读 ctf 目录下的 .bash_history 发现存在另外一个神奇的目录 /var/www/ctf/V72J1dn23wjFrq
  3. bp 扫描发现 V72J1dn23wjFrq 目录下有敏感文件 demo.php,读一下发现存在 include
  4. 读默认的 php 配置目录 /etc/php/7.0/apache2/php.ini 发现 allow_url_openallow_url_include 都被关闭了,所以没法通过类似于 xxx://xx 的方式拿到 shell
  5. 尝试寻找本地 apache2 日志,读取到 /etc/apache2/apache2.config 中存在 {APACHE_LOG_DIR}/access(error).log,但访问 envvars 提示权限不足,所以猜测 {APACHE_LOG_DIR}/var/log/apache2 但是没读到东西。
  6. 用 bp 遍历 /proc/self/fd/* 的日志,拿到 *=7
  7. UA 中写入一句话木马,然后通过 demo.php 发包拿到 shell,进而得到答案。

日志包含注入特性

  1. 日志中格式为:
1
2
3
127.0.0.1 - - [02/Dec/2019:22:18:28 +0800] "GET / HTTP/1.1" 200 5615
127.0.0.1 - - [02/Dec/2019:22:18:28 +0800] "GET /wampthemes/classic/style.css HTTP/1.1" 200 2415
127.0.0.1 - - [02/Dec/2019:22:18:29 +0800] "GET /wampthemes/classic/img/gifLogo.gif HTTP/1.1" 200 3525

所以在 UA 中存入 php 代码,可以被文件包含。

  1. 被包含文件中 php 代码一旦报错,则不向下执行。

Internal_System

  1. 通过乱填可以发现存在 ssrf 点,进去读一下/etc/passwd/home/ctf/.bash_history,发现可能存在一个 Tomcat 服务和它的绝对路径,猜测其常见端口为 8080

  2. 读取一下 /home/ctf/apache-tomcat-10.0.8/conf/tomcat-users.xml,发现存在账号密码 tomcat:hLH5EhUgS2ciE0We

  3. 读取一下 /var/www/ctf/image.php 发现可以使用 gopher 协议。

  4. 我们可以利用 gopher 协议在服务端构造请求。

    例子:

    gopher://ip:port/_details

    detail 由正常数据包编码两次而来,第一次先把数据包中的换行编码为 %0d%0a,然后再编码一次。

    其中,账号密码的认证可以在协议头中,用:Authorization: Basic Base64(username:password) 的格式填充。

    本题构造:

    1
    2
    3
    4
    GET /manager/html HTTP/1.1
    Host: 127.0.0.1:8080
    Authorization: Basic dG9tY2F0OmhMSDVFaFVnUzJjaUUwV2U=
    Connection: close

    发现其中有可疑目录:Here_1s_the_flag

  5. 修改 URL 为 Here_1s_the_flag,得到答案。