zoukankan      html  css  js  c++  java
  • ctfhub技能树—信息泄露—PHPINFO

    打开靶机

     查看页面,是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 可以查看临时文件存放的文件夹,但是文件名是随机的

  • 相关阅读:
    delphi快捷键
    Delphi代码规范
    Hibernate通用Dao
    SpringData初探
    Windows下shell神器
    正则语法总结
    nodejs的npm命令无反应的解决方案
    JavaScript中,返回上一个页面时,如何保证上一个页面的不刷新?
    js上传图片
    正则匹配结果取反(正则中的前瞻,负向前瞻与后顾)
  • 原文地址:https://www.cnblogs.com/anweilx/p/12420107.html
Copyright © 2011-2022 走看看