打开靶机

查看页面,是PHP info界面

只有这一个页面,查找一下有没有flag

拿到flag

浅谈ctf中phpinfo需要关注的点(转自先知社区)

1 https://xz.aliyun.com/t/6131

首先我们先谈谈

php各个版本的的差异

php5.2以前

  • __autoload()加载类文件,但只能调用一次这个函数,所以可以用spl_autoload_register()加载类

    关于 autoload()函数,如果定义了该函数,该代码就会被调用

    关于spl_autoload_register()函数:注册给定的函数作为
    autoload 的实现

    当出现未定义的类时,标准PHP库会按照注册的倒序逐个调用被注册的__autoload()函数

php5.2

  • 增加了json_encode(),json_decode()等,关于json的函数。

php5.3

  • 删除了Register Globals
  • 新增了glob://phar://流包装

    glob用来列目录,绕过open_baedir

    phar在文件包含中可以用来绕过一些后缀的限制

  • 新的全局变量DIR

  • 默认开启<?= $xxoo;?>,5.4也可用 //起止标签
  • 增加了魔术方法 invoke()、callStatic():

    invoke():当尝试以调用函数的方式调用一个对象时,invoke() 方法会被自动调用。

    callStatic():在静态上下文中调用一个不可访问方法时,callStatic() 会被调用。

    具体查看:php魔术方法

    • 三元操作符简写:可以省略第二部分,默认用第一部分代替

      旧 echo $a?$a:’hello world’;

      新 echo $a?:’hello world’;

关于一些封装协议可以参考:

1 https://xz.aliyun.com/t/5535

php5.4

php5.5

  • 废除preg_replace的/e模式(不是移除)

    当使用被弃用的 /e 修饰符时, 这个函数会转义一些字符(即:'、"、 和 NULL) 然后进行后向引用替换。

    1 http://php.net/manual/zh/function.preg-replace.php
  • 不再支持Windows XP

php5.6

  • 定义常量时允许使用之前定义的常量进行计算:
  • 使用 ... 运算符定义变长参数函数

    参考:

    1 http://php.net/manual/zh/functions.arguments.php#functions.variable-arg-list

php7.0

1、十六进制字符串不再是认为是数字

2、移除asp和script php标签

<% %>
<%= %>
<script language="php"></script>

3、在后面的版本中assert变成语言结构,这将意味着很多一句话不能使用。

目前经过测试,可使用的有。

call_user_func('assert', 'phpinfo();');

php7.1

1 http://php.net/manual/zh/migration71.new-features.php
  • 废除mb_ereg_replace()和mb_eregi_replace()的Eval选项

php7.2

  • php 7.2大都是底层的更新,提高性能。没有太大常用语法层面的更新,这里就略过了

php7.3

  • 添加了 array_key_first() 和 array_key_last() 来获取数组的第一个和最后一个元素的键名
  • json_decode 添加了一个常量, JSON_THROW_ON_ERROR, 如果解析失败可以抛出异常, 而不是通过之前的方法 json_last_error() 去获取

接下来我们开始谈正事ctfphpinfo中需要注意的点

system info 详细的操作系统信息 确定window or linux

Registered PHP Streams and filters 注册的php过滤器和流协议

extension_dir php扩展的路径

short_open_tag <?= 和 <? echo 等价 允许php标签为<? ?>形式

disable_function 禁用函数

open_basedir 将用户可操作的文件限制在某目录下

SERVER_ADDR 真实ip

DOCUMENT_ROOT web根目录

_FILES["file"] 可以获取临时文件名字和路径

session 可以查看session的相关配置

gopher 可以实现ssrf攻击

fastcgi 查看是否开启fastcgi和fastcgi的版本,可能导致解析漏洞、远程命令执行、任意文件读取等问题

allow_url_include和allow_url_fopen,都可以远程包含文件

extension_dir php扩展的路径

asp_tags 开启后,才可以对asp标签进行解析

magic_quotes_gpc 对字符进行转义类似addslashes()

open_basedir 将用户可操作的文件限制在某目录下,可以绕过

libxml 2.9以前的版本默认支持并开启了外部实体的引用,会导致XXE

opcache 当开启了opcache并可以上传文件时,可以在本地生成一个与服务器文件名相同的文件,并生成缓存文件xx.php.bin。上传后恶意缓存文件会将服务器上的原文件覆盖,从而getshell。

imap CVE-2018-19518

session 可以看session的存储路径,session包含可以用到

upload_tmp_dir 可以查看临时文件存放的文件夹,但是文件名是随机的

ctfhub技能树—信息泄露—PHPINFO的更多相关文章

  1. ctfhub技能树—信息泄露—hg泄露

    打开靶机 查看页面信息 使用dvcs-ripper工具进行处理 ./rip-hg.pl -v -u http://challenge-cf630b528f6f25e2.sandbox.ctfhub.c ...

  2. ctfhub技能树—信息泄露—svn泄露

    打开靶机 查看页面信息 使用dvcs-ripper工具进行处理 ./rip-svn.pl -v -u http://challenge-3b6d43d72718eefb.sandbox.ctfhub. ...

  3. ctfhub技能树—信息泄露—git泄露—index

    打开靶机 查看页面信息 使用dirsearch进行扫描 使用githack工具处理git泄露情况 使用git log命令查看历史记录 与 add flag 9b5b58-- 这次提交进行比对 即可拿到 ...

  4. ctfhub技能树—信息泄露—git泄露—Log

    什么是git泄露? 当前大量开发人员使用git进行版本控制,对站点自动部署.如果配置不当,可能会将.git文件夹直接部署到线上环境.这就引起了git泄露漏洞. 打开靶机环境 查看网页内容 使用dirs ...

  5. ctfhub技能树—信息泄露—备份文件下载—vim缓存

    打开靶机 查看页面信息 在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容 以 index.php 为例:第 ...

  6. ctfhub技能树—信息泄露—备份文件下载—bak文件

    打开靶机 查看页面信息 继续使用dirsearch进行扫描 python3 dirsearch.py -u http://challenge-d4234042e1d43e96.sandbox.ctfh ...

  7. ctfhub技能树—信息泄露—git泄露—Stash

    打开靶机环境 查看页面内容 使用dirsearch进行扫描 使用Githack工具处理git泄露情况 进入.git/refs目录 发现stash文件,使用notepad++打开文件 使用git dif ...

  8. ctfhub技能树—信息泄露—备份文件下载—.DS_Store

    打开靶机 查看页面信息 使用dirsearch进行扫描 访问该网页,下载文件 使用Linux系统打开文件 发现一个特殊文件,使用浏览器打开 拿到flag 二.使用Python-dsstore工具查看该 ...

  9. ctfhub技能树—信息泄露—备份文件下载—网站源码

    打开靶机 查看网页内容 使用dirsearch进行扫描 命令如下 python3 dirsearch.py -u http://challenge-91f1f5e6a791ab02.sandbox.c ...

随机推荐

  1. centos 7 配置 mysql 5.7 主从复制

    centos 7 配置 mysql 5.7 主从复制 主库:192.168.12.3 从库:192.168.12.2 1. 主库从库所在服务器关闭防火墙Systemctl stop firewalld ...

  2. Spring Boot 2.4 对多环境配置的支持更改

    在目前最新的Spring Boot 2.4版本中,对配置的加载机制做了较大的调整.相关的问题最近也被问的比较多,所以今天就花点时间,给大家讲讲Spring Boot 2.4的多环境配置较之前版本有哪些 ...

  3. CentOS6下的ElasticSearch运行步骤

    如何运行ElasticSearch: 1.首先安装jdk1.8版本或以上. 2.下载elasticsearch的压缩包.(我下载的是elasticsearch-6.3.2.tar.gz) 3.使用命令 ...

  4. Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)

    @ 目录 1.说明 2.代码 关于作者 1.说明 使用正则表达式,匹配客户端的请求头 获取到请求的路径 返回对应请求路径的文字 可以使用打开对应文件的方式去返回对应的文件 2.代码 from sock ...

  5. MySQL(二):快速理解MySQL数据库索引

    索引 基本概念:索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现. 数据结构 Tree 指的是 Balance Tree,也就是平衡树.平衡树是一颗查找树,并 ...

  6. 【剑指offer】03 从尾到头打印链表

    题目地址:从尾到头打印链表 题目描述                                    输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 时间限制:C/C++ 1秒, ...

  7. 扫描条形码获取商品信息(iOS 开发)

    一.导入ZBarSDK及其依赖库(这不是本文侧重点)     1.下载地址 https://github.com/bmorton/ZBarSDK     2.导入头文件 #import "Z ...

  8. 微软自带打包工具 InstallShield 的使用

    1.下载并安装  InstallShield InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)   Ins ...

  9. (二)、vim即gvim的炫酷搜索模式与技巧

      一.进入搜索模式 1. 打开文件,狂按  <Esc> 进入normal模式,然后按  /  或者  :/  进入搜索模式,添加上关键字例如world,按回车即搜索world: :/wo ...

  10. JVM 经典垃圾收集器

    本文部分摘自<深入理解 Java 虚拟机第三版> 概述 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的实践者.Java 虚拟机规范中对垃圾收集器的实现做出规定,因此不同的厂 ...