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
- register_globals 和 register_long_arrays php.ini 指令被移除。
- php.ini新增session.upload_progress.enabled,默认为1,可用来文件包含
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的更多相关文章
- ctfhub技能树—信息泄露—hg泄露
打开靶机 查看页面信息 使用dvcs-ripper工具进行处理 ./rip-hg.pl -v -u http://challenge-cf630b528f6f25e2.sandbox.ctfhub.c ...
- ctfhub技能树—信息泄露—svn泄露
打开靶机 查看页面信息 使用dvcs-ripper工具进行处理 ./rip-svn.pl -v -u http://challenge-3b6d43d72718eefb.sandbox.ctfhub. ...
- ctfhub技能树—信息泄露—git泄露—index
打开靶机 查看页面信息 使用dirsearch进行扫描 使用githack工具处理git泄露情况 使用git log命令查看历史记录 与 add flag 9b5b58-- 这次提交进行比对 即可拿到 ...
- ctfhub技能树—信息泄露—git泄露—Log
什么是git泄露? 当前大量开发人员使用git进行版本控制,对站点自动部署.如果配置不当,可能会将.git文件夹直接部署到线上环境.这就引起了git泄露漏洞. 打开靶机环境 查看网页内容 使用dirs ...
- ctfhub技能树—信息泄露—备份文件下载—vim缓存
打开靶机 查看页面信息 在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容 以 index.php 为例:第 ...
- ctfhub技能树—信息泄露—备份文件下载—bak文件
打开靶机 查看页面信息 继续使用dirsearch进行扫描 python3 dirsearch.py -u http://challenge-d4234042e1d43e96.sandbox.ctfh ...
- ctfhub技能树—信息泄露—git泄露—Stash
打开靶机环境 查看页面内容 使用dirsearch进行扫描 使用Githack工具处理git泄露情况 进入.git/refs目录 发现stash文件,使用notepad++打开文件 使用git dif ...
- ctfhub技能树—信息泄露—备份文件下载—.DS_Store
打开靶机 查看页面信息 使用dirsearch进行扫描 访问该网页,下载文件 使用Linux系统打开文件 发现一个特殊文件,使用浏览器打开 拿到flag 二.使用Python-dsstore工具查看该 ...
- ctfhub技能树—信息泄露—备份文件下载—网站源码
打开靶机 查看网页内容 使用dirsearch进行扫描 命令如下 python3 dirsearch.py -u http://challenge-91f1f5e6a791ab02.sandbox.c ...
随机推荐
- selenium_学习笔记——二次封装常用的方法
# coding = utf-8 ''' 二次封装元素方法 加入循环查找方法,提高查找元素的稳定性 ''' from selenium import webdriver from selenium.w ...
- css 10-CSS3选择器详解
10-CSS3选择器详解 #CSS3介绍 CSS3在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷. #CSS3的现状 浏览器支持程度不够好,有 ...
- js下 Day15、正则表达式
一.正则表达式简介 什么是正则表达式 正则表达式,也叫规则表达式, 是对字符串操作的一种逻辑公式. 为什么要使用正则? 1.使用极简单的方式,去匹配字符串 2.速度快,代码少 3.在复杂的字符串中快速 ...
- react第八单元(什么是纯函数-组件的性能优化-pureComponent-组件性能优化的原理)
课程目标 理解纯函数 熟练掌握组件性能优化的几种技巧 pureComponent和Component的区别 #知识点 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数 ...
- mini-web框架-WSGI-mini-web框架-多进程,面向对象的服务器(5.1.1)
@ 目录 1.说明 2.代码 关于作者 1.说明 使用多进程 积极主动python多进程是复制资源,线程是共享变量 所以这个的socket要关两次,因为复制文件的时候,是把文件的fd给复制过去(fil ...
- xss靶场练习(7.22)
靶场地址:http://xss.fbisb.com/ 参考的文章:https://www.cnblogs.com/cute-puli/p/10834954.html 感谢大佬的分享 做这个题的思路就 ...
- 30道 有趣的 的 JVM 面试题
目录 1.JVN内存结构 2.对象分配规则 3.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法 4.Perm Space中保存什么数据?会引起OutOfMemor ...
- Java篇:Docker的介绍安装 和常用命令
文章目录 为什么 出现docker Docker的简介 容器(Container) 镜像(Image) 仓库(Repository) Docker的安装 查看容器 删除镜像 删除容器 部署应用 以my ...
- Mysql5.7.20安装手记
Mysql到5.7之后安装较之前有了很大的不同,特别是解压缩版,可能安装速度较之前有所减少,但对于我们这种一直使用5.5的我来说不知道步骤还真是挺费劲的.下面详细记一下我安装的过程. 1.下载mysq ...
- 由innodb锁引起的数据库相关
innodb 锁的问题 1.事务 原子性:要么成功,要么失败 一致性:前后数据保持一致状态 隔离性:多个事务并行,相互不影响 持久性:事务提交之后,对数据的影响是永久性的,即使故障也可以保持. 2.并 ...