運維搭建CTFd在線靶場

CentOS7.2搭建ctfd靶場平臺

參考

先有一臺CentOS7.2無界面的 2核4G內存30G磁盤

然後網絡橋接模式

配置CentOS7的yum源爲阿里的

  • 1、安裝git
yum provides git
yum -y install git
  • 2、安裝pip(有坑)

CentOS默認python2.7.5環境,不支持pip

[root@localhost ~]# python -V
Python 2.7.5
[root@localhost ~]# pip -V
-bash: pip: 未找到命令
[root@localhost ~]# 
[root@localhost ~]# yum -y install python-pip
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
沒有可用軟件包 python-pip。
錯誤:無須任何處理
[root@localhost ~]#

安裝python3

[root@localhost ~]# yum -y install python3

[root@localhost ~]# python3 -V
Python 3.6.8
[root@localhost ~]# 
[root@localhost ~]# pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
[root@localhost ~]# 

pip3版本太低,需要升級,不升級會導致安裝報錯
升級pip3之前先把pypi鏡像源更換爲國內(阿里)源,不然升級pip3會出錯,報錯網絡不可達

由於在 ~/ 目錄下沒有.pip目錄,故創建

[root@localhost ~]# mkdir .pip
[root@localhost ~]# 
[root@localhost ~]# ls -a
.   anaconda-ks.cfg  .bash_logout   .bashrc  .pip             .tcshrc
..  .bash_history    .bash_profile  .cshrc   .python_history  .viminfo
[root@localhost ~]# cd .pip/
[root@localhost .pip]# ls
[root@localhost .pip]# 

編輯配置文件 pip.conf

[root@localhost .pip]# vim pip.conf
[root@localhost .pip]# 
[root@localhost .pip]# cat pip.conf 
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

[root@localhost .pip]#

此時再升級pip3
pip3 install --upgrade pip

[root@localhost ~]# pip3 install --upgrade pip
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting pip
  Downloading https://mirrors.aliyun.com/pypi/packages/43/84/23ed6a1796480a6f1a2d38f2802901d078266bda38388954d01d3f2e821d/pip-20.1.1-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 30.5MB/s 
Installing collected packages: pip
Successfully installed pip-20.1.1
[root@localhost ~]# 

成功升級pip3

此時再查看pip版本

[root@localhost ~]# pip -V
pip 20.1.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
[root@localhost ~]#
  • 3、安裝Flask
    pip install Flask
[root@localhost ~]# pip install Flask
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting Flask
  Downloading https://mirrors.aliyun.com/pypi/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl (94 kB)
     |████████████████████████████████| 94 kB 1.6 MB/s 
Collecting Werkzeug>=0.15
  Downloading https://mirrors.aliyun.com/pypi/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
     |████████████████████████████████| 298 kB 5.1 MB/s 
Collecting click>=5.1
  Downloading https://mirrors.aliyun.com/pypi/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 401 kB/s 
Collecting itsdangerous>=0.24
  Downloading https://mirrors.aliyun.com/pypi/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting Jinja2>=2.10.1
  Downloading https://mirrors.aliyun.com/pypi/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 24.4 MB/s 
Collecting MarkupSafe>=0.23
  Downloading https://mirrors.aliyun.com/pypi/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB)
Installing collected packages: Werkzeug, click, itsdangerous, MarkupSafe, Jinja2, Flask
Successfully installed Flask-1.1.2 Jinja2-2.11.2 MarkupSafe-1.1.1 Werkzeug-1.0.1 click-7.1.2 itsdangerous-1.1.0
[root@localhost ~]#
 
  • 4、克隆CTFd

查看git版本

[root@localhost ~]# git --version
git version 1.8.3.1
[root@localhost ~]#

創建CTFd目錄

[root@localhost ~]# cd /usr/local/
[root@localhost local]# mkdir CTFd
[root@localhost local]# ls
bin  CTFd  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@localhost local]# cd CTFd/
[root@localhost CTFd]# pwd
/usr/local/CTFd
[root@localhost CTFd]#

開始克隆
git clone https://github.com/CTFd/CTFd.git

[root@localhost CTFd]# git clone https://github.com/CTFd/CTFd.git
正克隆到 'CTFd'...
remote: Enumerating objects: 216, done.
remote: Counting objects: 100% (216/216), done.
remote: Compressing objects: 100% (132/132), done.
remote: Total 10336 (delta 112), reused 125 (delta 78), pack-reused 10120
接收對象中: 100% (10336/10336), 14.90 MiB | 32.00 KiB/s, done.
處理 delta 中: 100% (6417/6417), done.
[root@localhost CTFd]# ls
CTFd
[root@localhost CTFd]#
[root@localhost CTFd]# cd CTFd/
[root@localhost CTFd]# pwd
/usr/local/CTFd/CTFd
[root@localhost CTFd]# 
[root@localhost CTFd]# ls
CHANGELOG.md          Dockerfile  migrations        serve.py
conf                  docs        package.json      setup.cfg
CONTRIBUTING.md       export.py   populate.py       tests
CTFd                  import.py   prepare.sh        Vagrantfile
development.txt       LICENSE     README.md         webpack.config.js
docker-compose.yml    Makefile    requirements.txt  wsgi.py
docker-entrypoint.sh  manage.py   scripts           yarn.lock
[root@localhost CTFd]#
  • 4、安裝CTFd

pip install -r requirements.txt

[root@localhost CTFd]# pip install -r requirements.txt 
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting Flask==1.1.1
  Downloading https://mirrors.aliyun.com/pypi/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f43bbb1d3b/Flask-1.1.1-py2.py3-none-any.whl (94 kB)
     |████████████████████████████████| 94 kB 3.8 MB/s 
Collecting Werkzeug==0.16.0
  Downloading https://mirrors.aliyun.com/pypi/packages/ce/42/3aeda98f96e85fd26180534d36570e4d18108d62ae36f87694b476b83d6f/Werkzeug-0.16.0-py2.py3-none-any.whl (327 kB)
     |████████████████████████████████| 327 kB 13.4 MB/s 
Collecting Flask-SQLAlchemy==2.4.1
  Downloading https://mirrors.aliyun.com/pypi/packages/1e/65/226d95466c75e34e291a76890ed0e27af2e46ab913002847856f11d4d59d/Flask_SQLAlchemy-2.4.1-py2.py3-none-any.whl (17 kB)
Collecting Flask-Caching==1.4.0
  Downloading https://mirrors.aliyun.com/pypi/packages/63/c0/5dce9fe8372a7b57b60ec7650e1aeb1a2f861393b0c6e7e2dcb71d2f31ab/Flask_Caching-1.4.0-py2.py3-none-any.whl (16 kB)
Collecting Flask-Migrate==2.5.3
  Downloading https://mirrors.aliyun.com/pypi/packages/e5/64/c75f173ba5420f5174be6f04dfa8d8250d4808c12a9cd781e84c0b31684f/Flask_Migrate-2.5.3-py2.py3-none-any.whl (13 kB)
Collecting Flask-Script==2.0.6
  Downloading https://mirrors.aliyun.com/pypi/packages/00/a4/cd587b2b19f043b65bf33ceda2f6e4e6cdbd0ce18d01a52b9559781b1da6/Flask-Script-2.0.6.tar.gz (43 kB)
     |████████████████████████████████| 43 kB 1.8 MB/s 
Collecting SQLAlchemy==1.3.11
  Downloading https://mirrors.aliyun.com/pypi/packages/34/5c/0e1d7ad0ca52544bb12f9cb8d5cc454af45821c92160ffedd38db0a317f6/SQLAlchemy-1.3.11.tar.gz (6.0 MB)
     |████████████████████████████████| 6.0 MB 16.1 MB/s 
Collecting SQLAlchemy-Utils==0.36.0
  Downloading https://mirrors.aliyun.com/pypi/packages/8b/d7/d673a9a72158c45406c27c56d8b0d6c618b1627166b6527486e61902f585/SQLAlchemy-Utils-0.36.0.tar.gz (127 kB)
     |████████████████████████████████| 127 kB 4.1 MB/s 
Collecting passlib==1.7.2
  Downloading https://mirrors.aliyun.com/pypi/packages/11/b8/e9a78f3033228013ba8564adad8d0031bf9d39ea3acc3cdb9d55fabeb4ba/passlib-1.7.2-py2.py3-none-any.whl (507 kB)
     |████████████████████████████████| 507 kB 22.9 MB/s 
Collecting bcrypt==3.1.7
  Downloading https://mirrors.aliyun.com/pypi/packages/8b/1d/82826443777dd4a624e38a08957b975e75df859b381ae302cfd7a30783ed/bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56 kB)
     |████████████████████████████████| 56 kB 4.2 MB/s 
Collecting six==1.13.0
  Downloading https://mirrors.aliyun.com/pypi/packages/65/26/32b8464df2a97e6dd1b656ed26b2c194606c16fe163c695a992b36c11cdf/six-1.13.0-py2.py3-none-any.whl (10 kB)
Requirement already satisfied: itsdangerous==1.1.0 in /usr/local/lib/python3.6/site-packages (from -r requirements.txt (line 12)) (1.1.0)
Collecting requests>=2.20.0
  Downloading https://mirrors.aliyun.com/pypi/packages/1a/70/1935c770cb3be6e3a8b78ced23d7e0f3b187f5cbfab4749523ed65d7c9b1/requests-2.23.0-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 7.2 MB/s 
Collecting PyMySQL==0.9.3
  Downloading https://mirrors.aliyun.com/pypi/packages/ed/39/15045ae46f2a123019aa968dfcba0396c161c20f855f11dea6796bcaae95/PyMySQL-0.9.3-py2.py3-none-any.whl (47 kB)
     |████████████████████████████████| 47 kB 4.1 MB/s 
Collecting gunicorn==19.10.0
  Downloading https://mirrors.aliyun.com/pypi/packages/5f/54/c15f2c243c19074cbf06ce6c48732d99aec825487f87e57e86e9a22990f2/gunicorn-19.10.0-py2.py3-none-any.whl (113 kB)
     |████████████████████████████████| 113 kB 8.8 MB/s 
Collecting dataset==1.1.2
  Downloading https://mirrors.aliyun.com/pypi/packages/d5/02/a4c77a15d004f1307a579e577974fa9292a63e93abff3e40ad993cf597c7/dataset-1.1.2-py2.py3-none-any.whl (14 kB)
Collecting mistune==0.8.4
  Downloading https://mirrors.aliyun.com/pypi/packages/09/ec/4b43dae793655b7d8a25f76119624350b4d65eb663459eb9603d7f1f0345/mistune-0.8.4-py2.py3-none-any.whl (16 kB)
Collecting netaddr==0.7.19
  Downloading https://mirrors.aliyun.com/pypi/packages/ba/97/ce14451a9fd7bdb5a397abf99b24a1a6bb7a1a440b019bebd2e9a0dbec74/netaddr-0.7.19-py2.py3-none-any.whl (1.6 MB)
     |████████████████████████████████| 1.6 MB 25.7 MB/s 
Collecting redis==3.3.11
  Downloading https://mirrors.aliyun.com/pypi/packages/32/ae/28613a62eea0d53d3db3147f8715f90da07667e99baeedf1010eb400f8c0/redis-3.3.11-py2.py3-none-any.whl (66 kB)
     |████████████████████████████████| 66 kB 3.9 MB/s 
Collecting gevent==1.4.0
  Downloading https://mirrors.aliyun.com/pypi/packages/f2/ca/5b5962361ed832847b6b2f9a2d0452c8c2f29a93baef850bb8ad067c7bf9/gevent-1.4.0-cp36-cp36m-manylinux1_x86_64.whl (5.5 MB)
     |████████████████████████████████| 5.5 MB 26.4 MB/s 
Collecting python-dotenv==0.10.3
  Downloading https://mirrors.aliyun.com/pypi/packages/57/c8/5b14d5cffe7bb06bedf9d66c4562bf90330d3d35e7f0266928c370d9dd6d/python_dotenv-0.10.3-py2.py3-none-any.whl (16 kB)
Collecting flask-restx==0.1.1
  Downloading https://mirrors.aliyun.com/pypi/packages/09/f9/ab7ff10f586aacfee415a20a1181a4318e8b446328233908a79e1c5fff45/flask_restx-0.1.1-py2.py3-none-any.whl (2.6 MB)
     |████████████████████████████████| 2.6 MB 1.9 MB/s 
Collecting pathlib2==2.3.5
  Downloading https://mirrors.aliyun.com/pypi/packages/e9/45/9c82d3666af4ef9f221cbb954e1d77ddbb513faf552aea6df5f37f1a4859/pathlib2-2.3.5-py2.py3-none-any.whl (18 kB)
Collecting flask-marshmallow==0.10.1
  Downloading https://mirrors.aliyun.com/pypi/packages/68/4e/7456ef40aeb59e6332e7481705e2b2f27b01772710d9ea1839c2f6379dc2/flask_marshmallow-0.10.1-py2.py3-none-any.whl (9.7 kB)
Collecting marshmallow-sqlalchemy==0.17.0
  Downloading https://mirrors.aliyun.com/pypi/packages/63/b2/73d041a32d3e859c95d3c5ed3f5fca66b5877efaee247015679b9a146546/marshmallow_sqlalchemy-0.17.0-py2.py3-none-any.whl (13 kB)
Collecting boto3==1.13.9
  Downloading https://mirrors.aliyun.com/pypi/packages/34/0b/d6ccca67118f99ad80ca43c92282b25e31c647e8c65b2a65a91efdbb88d3/boto3-1.13.9-py2.py3-none-any.whl (128 kB)
     |████████████████████████████████| 128 kB 3.7 MB/s 
Collecting marshmallow==2.20.2
  Downloading https://mirrors.aliyun.com/pypi/packages/37/ee/ac9932793478432f0ba1bdc0451be244b4dc2b73c0036bd08c40bddfe2f2/marshmallow-2.20.2-py2.py3-none-any.whl (50 kB)
     |████████████████████████████████| 50 kB 5.3 MB/s 
Requirement already satisfied: click>=5.1 in /usr/local/lib/python3.6/site-packages (from Flask==1.1.1->-r requirements.txt (line 1)) (7.1.2)
Requirement already satisfied: Jinja2>=2.10.1 in /usr/local/lib/python3.6/site-packages (from Flask==1.1.1->-r requirements.txt (line 1)) (2.11.2)
Collecting alembic>=0.7
  Downloading https://mirrors.aliyun.com/pypi/packages/60/1e/cabc75a189de0fbb2841d0975243e59bde8b7822bacbb95008ac6fe9ad47/alembic-1.4.2.tar.gz (1.1 MB)
     |████████████████████████████████| 1.1 MB 15.9 MB/s 
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting cffi>=1.1
  Downloading https://mirrors.aliyun.com/pypi/packages/f1/c7/72abda280893609e1ddfff90f8064568bd8bcb2c1770a9d5bb5edb2d1fea/cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl (399 kB)
     |████████████████████████████████| 399 kB 19.3 MB/s 
Collecting chardet<4,>=3.0.2
  Downloading https://mirrors.aliyun.com/pypi/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133 kB)
     |████████████████████████████████| 133 kB 21.9 MB/s 
Collecting idna<3,>=2.5
  Downloading https://mirrors.aliyun.com/pypi/packages/89/e3/afebe61c546d18fb1709a61bee788254b40e736cff7271c7de5de2dc4128/idna-2.9-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 5.7 MB/s 
Collecting certifi>=2017.4.17
  Downloading https://mirrors.aliyun.com/pypi/packages/57/2b/26e37a4b034800c960a00c4e1b3d9ca5d7014e983e6e729e33ea2f36426c/certifi-2020.4.5.1-py2.py3-none-any.whl (157 kB)
     |████████████████████████████████| 157 kB 22.1 MB/s 
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Downloading https://mirrors.aliyun.com/pypi/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl (126 kB)
     |████████████████████████████████| 126 kB 24.6 MB/s 
Collecting greenlet>=0.4.14; platform_python_implementation == "CPython"
  Downloading https://mirrors.aliyun.com/pypi/packages/bf/45/142141aa47e01a5779f0fa5a53b81f8379ce8f2b1cd13df7d2f1d751ae42/greenlet-0.4.15-cp36-cp36m-manylinux1_x86_64.whl (41 kB)
     |████████████████████████████████| 41 kB 261 kB/s 
Collecting pytz
  Downloading https://mirrors.aliyun.com/pypi/packages/4f/a4/879454d49688e2fad93e59d7d4efda580b783c745fd2ec2a3adf87b0808d/pytz-2020.1-py2.py3-none-any.whl (510 kB)
     |████████████████████████████████| 510 kB 29.3 MB/s 
Collecting jsonschema
  Downloading https://mirrors.aliyun.com/pypi/packages/c5/8f/51e89ce52a085483359217bc72cdbf6e75ee595d5b1d4b5ade40c7e018b8/jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
     |████████████████████████████████| 56 kB 4.9 MB/s 
Collecting aniso8601>=0.82
  Downloading https://mirrors.aliyun.com/pypi/packages/eb/e4/787e104b58eadc1a710738d4e418d7e599e4e778e52cb8e5d5ef6ddd5833/aniso8601-8.0.0-py2.py3-none-any.whl (43 kB)
     |████████████████████████████████| 43 kB 1.8 MB/s 
Collecting botocore<1.17.0,>=1.16.9
  Downloading https://mirrors.aliyun.com/pypi/packages/66/0f/d75516b712898401e90512e1ffc23dc76481d918ec98aad8a9af9c594809/botocore-1.16.22-py2.py3-none-any.whl (6.2 MB)
     |████████████████████████████████| 6.2 MB 2.4 MB/s 
Collecting s3transfer<0.4.0,>=0.3.0
  Downloading https://mirrors.aliyun.com/pypi/packages/69/79/e6afb3d8b0b4e96cefbdc690f741d7dd24547ff1f94240c997a26fa908d3/s3transfer-0.3.3-py2.py3-none-any.whl (69 kB)
     |████████████████████████████████| 69 kB 5.1 MB/s 
Collecting jmespath<1.0.0,>=0.7.1
  Downloading https://mirrors.aliyun.com/pypi/packages/07/cb/5f001272b6faeb23c1c9e0acc04d48eaaf5c862c17709d20e3469c6e0139/jmespath-0.10.0-py2.py3-none-any.whl (24 kB)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib64/python3.6/site-packages (from Jinja2>=2.10.1->Flask==1.1.1->-r requirements.txt (line 1)) (1.1.1)
Collecting Mako
  Downloading https://mirrors.aliyun.com/pypi/packages/a6/37/0e706200d22172eb8fa17d68a7ae22dec7631a0a92266634fb518a88a5b2/Mako-1.1.3-py2.py3-none-any.whl (75 kB)
     |████████████████████████████████| 75 kB 3.3 MB/s 
Collecting python-dateutil
  Downloading https://mirrors.aliyun.com/pypi/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
     |████████████████████████████████| 227 kB 18.6 MB/s 
Collecting python-editor>=0.3
  Downloading https://mirrors.aliyun.com/pypi/packages/c6/d3/201fc3abe391bbae6606e6f1d598c15d367033332bd54352b12f35513717/python_editor-1.0.4-py3-none-any.whl (4.9 kB)
Collecting pycparser
  Downloading https://mirrors.aliyun.com/pypi/packages/ae/e7/d9c3a176ca4b02024debf82342dab36efadfc5776f9c8db077e8f6e71821/pycparser-2.20-py2.py3-none-any.whl (112 kB)
     |████████████████████████████████| 112 kB 13.7 MB/s 
Collecting importlib-metadata; python_version < "3.8"
  Downloading https://mirrors.aliyun.com/pypi/packages/ad/e4/891bfcaf868ccabc619942f27940c77a8a4b45fd8367098955bb7e152fb1/importlib_metadata-1.6.0-py2.py3-none-any.whl (30 kB)
Collecting attrs>=17.4.0
  Downloading https://mirrors.aliyun.com/pypi/packages/a2/db/4313ab3be961f7a763066401fb77f7748373b6094076ae2bda2806988af6/attrs-19.3.0-py2.py3-none-any.whl (39 kB)
Collecting pyrsistent>=0.14.0
  Downloading https://mirrors.aliyun.com/pypi/packages/9f/0d/cbca4d0bbc5671822a59f270e4ce3f2195f8a899c97d0d5abb81b191efb5/pyrsistent-0.16.0.tar.gz (108 kB)
     |████████████████████████████████| 108 kB 15.0 MB/s 
Requirement already satisfied: setuptools in /usr/lib/python3.6/site-packages (from jsonschema->flask-restx==0.1.1->-r requirements.txt (line 22)) (39.2.0)
Collecting docutils<0.16,>=0.10
  Downloading https://mirrors.aliyun.com/pypi/packages/22/cd/a6aa959dca619918ccb55023b4cb151949c64d4d5d55b3f4ffd7eee0c6e8/docutils-0.15.2-py3-none-any.whl (547 kB)
     |████████████████████████████████| 547 kB 18.2 MB/s 
Collecting zipp>=0.5
  Downloading https://mirrors.aliyun.com/pypi/packages/b2/34/bfcb43cc0ba81f527bc4f40ef41ba2ff4080e047acb0586b56b3d017ace4/zipp-3.1.0-py3-none-any.whl (4.9 kB)
Using legacy setup.py install for Flask-Script, since package 'wheel' is not installed.
Using legacy setup.py install for SQLAlchemy, since package 'wheel' is not installed.
Using legacy setup.py install for SQLAlchemy-Utils, since package 'wheel' is not installed.
Using legacy setup.py install for pyrsistent, since package 'wheel' is not installed.
Building wheels for collected packages: alembic
  Building wheel for alembic (PEP 517) ... done
  Created wheel for alembic: filename=alembic-1.4.2-py2.py3-none-any.whl size=159543 sha256=20973e78f43c2af0634e9ee7978e3db2f3a925736a85c837830b3ba4a354d26d
  Stored in directory: /root/.cache/pip/wheels/16/31/2d/d9d8ac02e09ae9e002e1088a7c9019cab9e06dc15f512ca4f7
Successfully built alembic
Installing collected packages: Werkzeug, Flask, SQLAlchemy, Flask-SQLAlchemy, Flask-Caching, Mako, six, python-dateutil, python-editor, alembic, Flask-Migrate, Flask-Script, SQLAlchemy-Utils, passlib, pycparser, cffi, bcrypt, chardet, idna, certifi, urllib3, requests, PyMySQL, gunicorn, dataset, mistune, netaddr, redis, greenlet, gevent, python-dotenv, pytz, zipp, importlib-metadata, attrs, pyrsistent, jsonschema, aniso8601, flask-restx, pathlib2, marshmallow, flask-marshmallow, marshmallow-sqlalchemy, docutils, jmespath, botocore, s3transfer, boto3
  Attempting uninstall: Werkzeug
    Found existing installation: Werkzeug 1.0.1
    Uninstalling Werkzeug-1.0.1:
      Successfully uninstalled Werkzeug-1.0.1
  Attempting uninstall: Flask
    Found existing installation: Flask 1.1.2
    Uninstalling Flask-1.1.2:
      Successfully uninstalled Flask-1.1.2
    Running setup.py install for SQLAlchemy ... done
    Running setup.py install for Flask-Script ... done
    Running setup.py install for SQLAlchemy-Utils ... done
    Running setup.py install for pyrsistent ... done
Successfully installed Flask-1.1.1 Flask-Caching-1.4.0 Flask-Migrate-2.5.3 Flask-SQLAlchemy-2.4.1 Flask-Script-2.0.6 Mako-1.1.3 PyMySQL-0.9.3 SQLAlchemy-1.3.11 SQLAlchemy-Utils-0.36.0 Werkzeug-0.16.0 alembic-1.4.2 aniso8601-8.0.0 attrs-19.3.0 bcrypt-3.1.7 boto3-1.13.9 botocore-1.16.22 certifi-2020.4.5.1 cffi-1.14.0 chardet-3.0.4 dataset-1.1.2 docutils-0.15.2 flask-marshmallow-0.10.1 flask-restx-0.1.1 gevent-1.4.0 greenlet-0.4.15 gunicorn-19.10.0 idna-2.9 importlib-metadata-1.6.0 jmespath-0.10.0 jsonschema-3.2.0 marshmallow-2.20.2 marshmallow-sqlalchemy-0.17.0 mistune-0.8.4 netaddr-0.7.19 passlib-1.7.2 pathlib2-2.3.5 pycparser-2.20 pyrsistent-0.16.0 python-dateutil-2.8.1 python-dotenv-0.10.3 python-editor-1.0.4 pytz-2020.1 redis-3.3.11 requests-2.23.0 s3transfer-0.3.3 six-1.13.0 urllib3-1.25.9 zipp-3.1.0
[root@localhost CTFd]#
  • 5、啓動CTFd

啓動前先把防火牆搞定,以及默認端口4000放行

[root@localhost CTFd]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2020-06-04 10:38:56 CST; 1h 2min ago
 Main PID: 874 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─874 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

6月 04 10:38:54 localhost.localdomain systemd[1]: Starting firewalld - dyna...
6月 04 10:38:56 localhost.localdomain systemd[1]: Started firewalld - dynam...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost CTFd]# 
[root@localhost CTFd]# firewall-cmd --list-ports
[root@localhost CTFd]# 
[root@localhost CTFd]# firewall-cmd --zone=public --add-port=4000/tcp --permanent
success
[root@localhost CTFd]# firewall-cmd --reload
success
[root@localhost CTFd]# firewall-cmd --list-ports
4000/tcp
[root@localhost CTFd]#

下面先看serve.py文件(知其然知其所以然)

[root@localhost CTFd]# cat serve.py 
from CTFd import create_app
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--port", help="Port for debug server to listen on", default=4000)
parser.add_argument(
    "--profile", help="Enable flask_profiler profiling", action="store_true"
)
args = parser.parse_args()

app = create_app()

if args.profile:
    from flask_debugtoolbar import DebugToolbarExtension
    import flask_profiler

    app.config["flask_profiler"] = {
        "enabled": app.config["DEBUG"],
        "storage": {"engine": "sqlite"},
        "basicAuth": {"enabled": False},
        "ignore": ["^/themes/.*", "^/events"],
    }
    flask_profiler.init_app(app)
    app.config["DEBUG_TB_PROFILER_ENABLED"] = True
    app.config["DEBUG_TB_INTERCEPT_REDIRECTS"] = False

    toolbar = DebugToolbarExtension()
    toolbar.init_app(app)
    print(" * Flask profiling running at http://127.0.0.1:4000/flask-profiler/")

app.run(debug=True, threaded=True, host="127.0.0.1", port=args.port)
[root@localhost CTFd]#

由於想在內部局域網下使用,所以修改host爲0.0.0.0

vim serve.py
print(" * Flask profiling running at http://0.0.0.0:4000/flask-profiler/")

app.run(debug=True, threaded=True, host="0.0.0.0", port=args.port)
[root@localhost CTFd]#

下面開始啓動(推薦後臺啓動方式)

pyhton3 serve.py

[root@localhost CTFd]# python3 serve.py 
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
 * Loaded module, <module 'CTFd.plugins.challenges' from '/usr/local/CTFd/CTFd/CTFd/plugins/challenges/__init__.py'>
 * Loaded module, <module 'CTFd.plugins.dynamic_challenges' from '/usr/local/CTFd/CTFd/CTFd/plugins/dynamic_challenges/__init__.py'>
 * Loaded module, <module 'CTFd.plugins.flags' from '/usr/local/CTFd/CTFd/CTFd/plugins/flags/__init__.py'>
 * Serving Flask app "CTFd" (lazy loading)
 * Environment: development
 * Debug mode: on
INFO  [werkzeug]  * Running on http://0.0.0.0:4000/ (Press CTRL+C to quit)
INFO  [werkzeug]  * Restarting with stat
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
 * Loaded module, <module 'CTFd.plugins.challenges' from '/usr/local/CTFd/CTFd/CTFd/plugins/challenges/__init__.py'>
 * Loaded module, <module 'CTFd.plugins.dynamic_challenges' from '/usr/local/CTFd/CTFd/CTFd/plugins/dynamic_challenges/__init__.py'>
 * Loaded module, <module 'CTFd.plugins.flags' from '/usr/local/CTFd/CTFd/CTFd/plugins/flags/__init__.py'>
WARNI [werkzeug]  * Debugger is active!
INFO  [werkzeug]  * Debugger PIN: 329-498-992

這就是啓動成功了

後臺啓動方式(推薦)

[root@localhost CTFd]# pwd
/usr/local/CTFd/CTFd
[root@localhost CTFd]# 
[root@localhost CTFd]# nohup python3 serve.py &
[1] 5614
[root@localhost CTFd]# nohup: 忽略輸入並把輸出追加到"nohup.out"

[root@localhost CTFd]#

6、現在瀏覽器去打開http://IP:4000/

(剛剛修改server.py配置文件中的host就是爲了局域網能夠訪問到,IP就是CentOS7虛擬機外網ip)

訪問到以後可以註冊

Administration

Admin Username
admin

Admin Email

Admin Password
admin

然後逐步Next
最後Finish

然後再重新訪問
http://IP:4000/

這個時候右上方可以Register/Login(註冊/登錄)

此時登錄剛剛註冊的賬號

7、去CTFd放題目

創建一個管理員賬號後,然後點擊右上角 Admin -> Challenge 一直添加即可,第一個是名字,這裏是我其中一個題目的編輯狀況,這個平臺是可以用Markdown來編輯題目的。

點擊頁面上方Admin Panel
然後點擊頁面上方Challenges

進去以後直接放題目即可

__
純屬娛樂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章