记一次CTFd搭建经历
# 前言
一直不想更新博客,最近组织了校内 ctf 内部比赛,之前学长搭建的 CTFd 平台版本有点过时于是打算重新部署一个最新版的,期间遇到了很多问题 同时也十分感谢 VaalaCat 师傅的耐心指点。
现将本人搭建 CTFd 的一点经验分享出来
CTFd Version 3.4.3
# 搭建
我这里参考的是 vaalacat 师傅的博客再次致谢
# 准备环境
docker
docker-compose
# 配置准备
首先创建一个 swarm
1docker swarm init
然后加入
1docker node update --label-add='name=linux-1' $(docker node ls -q)
镜像源可以根据自己网络需要进行更改 /etc/docker/daemon.json
修改后 重启生效
12sudo systemctl daemon-reloadsudo systemctl restart docker
# 安装
参考以及使用 VaalaCat 师傅的仓库
# 下载
首先使用 VaalaCat 师傅仓库中的 ctf ...
buu刷题hatenum
# buu 刷题 Hatenum
知识点
SQL 函数
盲注
脚本编写
# 题目分析
题目给了源码
home.php
123456789101112<?phprequire_once('config.php');if(!$_SESSION['username']){ header('location:index.php');}if($_SESSION['username']=='admin'){ echo file_get_contents('/flag');}else{ echo 'hello '.$_SESSION['username'];}?>
当用户名为 admin 成功登录即可获得密码
config.php
123456789101112131415161718192021222324252627282930313233 ...
wp合集
太久没跟新了 ,就一起发了 💨
# 0x01 DAS sept
# web
# hellounser
一道 php 反序列化的题目:
1234567891011121314151617181920212223242526272829303132333435363738394041<?phpclass A { public $var; public function show(){ echo $this->var; } public function __invoke(){ $this->show(); }}class B{ public $func; public $arg; public function show(){ $func = $this->func; if(preg_match('/^[a-z0-9]*$/isD', $this- ...
华东南赛区Web4
# 涉及知识点
信息收集 任意文件读取
Flask 模块
伪随机数
session 构造
# 题目分析
打开题目 Hello World! Read somethings
给出一个链接 点击后 跳转到百度界面
1http://xxx.buuoj.cn:81/read?url=https://baidu.com
初步推测 ssrf 尝试 file 协议失败 local_file:// 协议成功 读取文件
123?url=local_file:///proc/self/cmdline #/usr/local/bin/python/app/app.py?url=local_file://app/app.py
1234567891011121314151617181920212223242526272829303132333435363738394041# ...
HarekazeCTF2019-encode_and_encode
# 题目分析
12345678910111213141516171819202122232425262728293031323334353637383940<?phperror_reporting(0);if (isset($_GET['source'])) { show_source(__FILE__); exit();}function is_valid($str) { $banword = [ // no path traversal '\.\.', // no stream wrapper '(php|file|glob|data|tp|zip|zlib|phar):', // no data exfiltration 'flag' ]; $regexp = '/' . implode('|', $banword) . '/i'; if (preg_matc ...
PicDown
# 知识点
liunx 中 用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的。
Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
还有的是一些以数字命名的目录,他们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在 /proc 下,以进程的 PID 号为目录名,他们是读取进程信息的接口。而 self 目录则是读取进程本身的信息接口,是一个 link
123456789cat /proc/[PID]/cmdline #包含进程的完整命令行信息/proc/[pid]/comm #包含进程的命令名。/proc/[pid]/cwd #进程当前工作目录的符号链接/proc/[pid]/enviro ...
RCEService
# 题目分析
对着题目一顿操作没弄出个所以
发现题目本身是给了源码的
123456789101112131415161718192021222324<?phpputenv('PATH=/home/rceservice/jail');if (isset($_REQUEST['cmd'])) { $json = $_REQUEST['cmd']; if (!is_string($json)) { echo 'Hacking attempt detected<br/><br/>'; } elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|his ...
强网杯
# 0x01 pop_master
打开题目
12345678<?phpinclude"class.php";//class.php.txthighlight_file(__FILE__);$a=$_GET['pop'];$b=$_GET['argv'];$class=unserialize($a);$class->XXXXXX($b); //随机生成6位长度的函数
根据提示信息 下载源码
我滴个乖乖 2M 多的链 16 万行
12345678910111213141516171819202122232425262728class NXlGlW{ public $hGYbeeG; public function HRD4CW($y3Cae){ eval($y3Cae); } public function C3akk9($MSL6W){ eval($MSL6W); }}class qAARvi{ pu ...
sql注入
# 默认存在的数据库:
mysql
需要 root 权限读取
information_schema
在 5 以上的版本中存在
# 测试是否存在注入方法
假:表示查询是错误的 (MySQL 报错 / 返回页面与原来不同)
真:表示查询是正常的 (返回页面与原来相同)
共三种情况:
字符串类型查询时:
数字类型查询时:
登陆时:
‘假’' 真 "假"" 真 \ 假 \ 真
AND 1 真 AND 0 假 AND true 真 AND false 假 1-false 有问题时返回 1 的结果 1-true 有问题时返回 0 的结果 2-1 返回与 1 相同代表可能存在问题 156 返回与 56 相同代表可能存在问题 156 返回与 1 相同代表没有问题
’ OR ‘1’ OR 1 – -" OR “” = “” OR 1 = 1 – -’=’‘LIKE’’=0–+
例子:
123SELECT * FROM Users WHERE id = '1''';SELECT * F ...
php知识
# 系统变量
123456$_POST // 获取 post 数据,是一个字典$_GET // 获取 get 数据,是一个字典$_COOKIE // 获取 cookie$_SESSION // 获取 session$_FILE // 获取上传的文件$_REQUEST // 获取 $_GET,$_POST,$_COOKIE 中的数据
# 错误控制运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
# 变量默认值
当定义一个变量,如果没有设置值,默认为 0
# $_GET 和 $_POST
1http://ctf4.shiyanbar.com/web/false.php?name[]=a&password[]=b
如果 GET 参数中设置 name[]=a ,那么 $_GET['name'] = [a] ,php 会把 []=a 当成数组传入, $_GET 会自动对参数调用 urldecode 。
$_POST 同样存在此漏洞,提交的表单数据, user[]=admin , $_POST['u ...









