ctfshow原谅杯
原谅4
源码
isset($_GET['xbx'])?system($_GET['xbx']):highlight_file(__FILE__); |
发现xbx可以rce
ls 发现
index.php yuanliang_4_xxx.zip
并且flag在/目录里面
直接cat发现不行
我们ls /bin目录
/bin 目录是 Unix/Linux 系统中的一个重要目录,它存放着许多常用的可执行文件(二进制文件)。这些文件通常是系统管理员或普通用户经常使用的基本命令和应用程序 |
最终发现sh rm ls 这三个命令可以执行
sh是一个轻量级的shell,相比于bash等更高级的shell,它提供了更基础的功能。但它仍然是许多系统管理任务的首选shell。 |
明显让我们用sh来做题目
sh也可以像cat一样读取文件内容但是有一点不同
[root@iZbp1g5j7wkdznqpfv918wZ ctf]# cat Gu0f3n.txt |
他会报错 command not found
因为当命令不被正常执行则会报错
这里我们可以用linux重定向错误输出
我们都知道在文件描述符中0,1,2 分表示标准输入,标准输出,标准错误输出
其次我们需要了解规律
1.标准输入0、输出1、错误2需要分别重定向,一个重定向只能改变它们中的一个 |
参考文章:https://blog.csdn.net/weixin_29491885/article/details/111050189
那么这道题目我们
用sh读取/flag的内容将他的报错输出
sh /flag 2>%261
需要姜&url编码为%26
paylod:
xbx=sh%20/flag%202>%261 |
原谅5_fastapi2
打开题目
{“你好”:“fastapi2”} |
fast api2
首先就是了解fastapi2这个东西
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建基于 Python 的 **API**。它是一个开源项目,基于 Starlette 和 Pydantic 库构建而成,提供了强大的功能和高效的性能。
在 FastAPI 中,/docs
路由提供了一个自动生成的交互式 API 文档界面。这是 FastAPI 的一个非常有用的特性,用于查看和测试 API 的各个端点
在更具题目给的提示
进入路由
发现三个函数
其中第二个calc
根据提示给的黑名单
我们展示全局变量
list(globals()) |
发现可疑的变量youdontknow
展示这个变量发现一堆过滤得到关键词
我们用
youdontknow.clear() |
clear掉过滤的关键词语
最后直接读flag
open('/flag').read() |
fastapi2 for 阿狸
和5一样
clear掉
嗨嗨
原谅6_web3
|
简单来说就是你输进去的文件不在waf的绕过里面就可以了
绕过的东西很多但是没有绕过**.user.ini**
.user.ini 文件是PHP 中用于配置特定目录的设置的特殊文件。 它类似于Apache 服务器中的 . htaccess 文件,但仅适用于PHP。 .user.ini 文件允许用户为特定目录定义PHP 配置指令,这些配置指令将在该目录及其所有子目录中的PHP 脚本执行时生效。
.user.ini
文件的主要目的是为了允许非管理员用户自定义某些 PHP 配置选项,而不需要访问主 php.ini
文件。这样,不同的应用程序或用户可以在自己的目录中设置特定的 PHP 配置,而不影响整个服务器的配置。
这里的考点就是session和.user.ini的条件竞争
参考文章:https://www.freebuf.com/vuls/202819.html
auto_prepend_file 表示在php程序加载应用程序前加载指定的php文件
GET:
?file=.user.ini |
POST:
auto_prepend_file=/tmp/sess_Gu0f3n |
然后用下大佬的脚本
# coding=utf-8 |
结果
//$flag='ctfshow{d78ac2f0-9b57-4159-a162-6b944e7b495b}'; |