Vlu-VP
Combine
- 发现
文件读取点,随便试试,发现过滤了../,想办法读取敏感文件,后来发现只是对类似敏感字符进行一次替换而不是拦截,所以用类似于..././的复写绕过。 - 通过读取目录
etc/passwd得到存在敏感目录ctf,读ctf目录下的.bash_history发现存在另外一个神奇的目录/var/www/ctf/V72J1dn23wjFrq。 - 用
bp扫描发现V72J1dn23wjFrq目录下有敏感文件demo.php,读一下发现存在include。 - 读默认的
php配置目录/etc/php/7.0/apache2/php.ini发现allow_url_open和allow_url_include都被关闭了,所以没法通过类似于xxx://xx的方式拿到shell。 - 尝试寻找本地
apache2日志,读取到/etc/apache2/apache2.config中存在{APACHE_LOG_DIR}/access(error).log,但访问envvars提示权限不足,所以猜测{APACHE_LOG_DIR}为/var/log/apache2但是没读到东西。 - 用 bp 遍历
/proc/self/fd/*的日志,拿到*=7。 - 在
UA中写入一句话木马,然后通过demo.php发包拿到shell,进而得到答案。
日志包含注入特性
- 日志中格式为:
1 | 127.0.0.1 - - [02/Dec/2019:22:18:28 +0800] "GET / HTTP/1.1" 200 5615 |
所以在 UA 中存入 php 代码,可以被文件包含。
- 被包含文件中 php 代码一旦报错,则不向下执行。
Internal_System
通过乱填可以发现存在
ssrf点,进去读一下/etc/passwd和/home/ctf/.bash_history,发现可能存在一个Tomcat服务和它的绝对路径,猜测其常见端口为8080读取一下
/home/ctf/apache-tomcat-10.0.8/conf/tomcat-users.xml,发现存在账号密码tomcat:hLH5EhUgS2ciE0We读取一下
/var/www/ctf/image.php发现可以使用gopher协议。我们可以利用
gopher协议在服务端构造请求。例子:
gopher://ip:port/_detailsdetail由正常数据包编码两次而来,第一次先把数据包中的换行编码为%0d%0a,然后再编码一次。其中,账号密码的认证可以在协议头中,用:
Authorization: Basic Base64(username:password)的格式填充。本题构造:
1
2
3
4GET /manager/html
Host: 127.0.0.1:8080
Authorization: Basic dG9tY2F0OmhMSDVFaFVnUzJjaUUwV2U=
Connection: close发现其中有可疑目录:
Here_1s_the_flag。修改 URL 为
Here_1s_the_flag,得到答案。