搭建H1ve-ctfd以及如何部署题目
前言:
之前都是學長搭建的平臺給我們做練習,時間過的好快,我現在已經變成學長了,為了學弟學妹們能學到知識,我就利用一下docker搭建ctfd,順便記錄一下過程,以免之后再搭建忘記。
0x00:搭建環境
1.Centos 7 64位 2.Docker 3.python2.70x01:搭建過程
安裝docker
安裝需要的軟件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bind-utils設置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo安裝docker
sudo yum install docker-ce啟動并加入開機啟動
sudo systemctl start docker sudo systemctl enable docker驗證是否安裝成功
docker version
以上的步驟按照步驟走一般沒問題,不會遇到錯誤什么的(親測),既然docker安裝好了,接下來就安裝docker-compose
____________更新
安裝docker-compose
建議安裝這一種來安裝
博客如下:
https://www.cnblogs.com/lywJ/p/10716062.html
安裝python-pip
yum -y install epel-release yum -y install python-pip檢查是否安裝成功
pip -V
對安裝的pip進行升級
這里就很平常一個升級,但是我就遇到了一個報錯
ModuleNotFoundError: No module named 'pip._internal',
(自己忘記截圖了,就使用大師傅的圖)
查了才知道有可能是與舊版沖突才導致了這個報錯,我使用的是第一種修復方法:
修復方法:
ModuleNotFoundError: No module named ‘pip._internal’ , pip 無法下載軟件 解決辦法
修復好之后,安裝docker-compose
pip install docker-compose如果報錯出現
ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out使用這個命令即可:
pip --default-timeout=200 install -U docker-compose但是。。。。我遇到報錯卻是這樣的
用pip安裝Python庫軟件的時候遇到"command 'gcc' failed with exit status 1"錯誤問題,看似缺少gcc組件,但是確實在安裝之前有執行過yum安裝gcc,但是還是有這樣的問題,原因便是缺少openssl-devel支持(PS:雖然我的報錯信息沒有顯示gcc,但我按照這個命令執行了,確實不會再報錯了)
解決方法:
yum install gcc libffi-devel python-devel openssl-devel -y解決"command ‘gcc’ failed with exit status 1"錯誤問題
執行完畢之后,再回到之前執行的pip安裝docker-compose
安裝成功,查看一下版本
注意如果docker-compose版本過低,則無法啟動H1ve-ctfd
啟動ctfd
既然docker和docker-compose都準備好了,就來下載一下ctfd,之前我們團隊qwzf大佬給我推薦了
H1ve--開源攻防訓練平臺 https://xz.aliyun.com/t/6889是基于ctfd開放的,而且更帥氣,更酷炫,放張圖
這一看就被吸引了,這樣太帥了,既然就是基于ctfd開放的,那么基本一樣,所以我就搭建這個平臺:
現在已經開源,感謝大佬們研發出這么帥的網站,可以在服務器中直接下載
git clone https://github.com/D0g3-Lab/H1ve.git下載好之后進入到目錄中,按照Github上的教程走:
docker-compose -f single.yml up但是。。。。又遇到了問題,繼續查:
可以發現這個問題是docker: Error response from daemon: ... : net/http: TLS handshake timeout.出現這個問題的原因是因為該命令默認從docker遠端鏡像倉庫中拉取鏡像,但由于遠端倉庫的服務器是在國外,我們國內有的用戶很可能都訪問不了,所以會報錯。
解決方法:使用阿里云鏡像加速器
按照上面配置鏡像加速器的方法復制粘貼即可,接下來進行安裝就可以看到很快的速度了
出現這個頁面就歐克了
默認的端口是8000,訪問一下服務器的IP地址
終于搭建好了,所說遇到很多問題,但也學到了不少東西。
0x02:部署題目
(吐槽一句,真的要吐了)
MISC和Crypto都好設置
設置好題目,上傳附件,添加flag即可
唯獨web題目有點麻煩,其實說麻煩也不是太麻煩,就是有點啰嗦,原本打算用docker去搭建web題,但是看了看服務器的配置還是算了的,就采用apache+MySQL+php來搭建,直接讓訪問var/www/html目錄下的文件就可以了
先來下載MySQL:
注意:在新版本的CentOS7中,默認的數據庫已更新為了Mariadb,而非 MySQL,所以執行 yum install mysql命令只是更新Mariadb數據庫,并不會安裝 MySQL
查看已安裝的 Mariadb 數據庫版本。
rpm -qa|grep -i mariadb卸載已安裝的 Mariadb 數據庫
rpm -qa|grep mariadb|xargs rpm -e --nodeps查看已安裝的 Mariadb 數據庫版本,確認是否卸載完成
rpm -qa|grep -i mariadb下載安裝包文件
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm安裝mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm安裝mysql
yum install mysql-server檢查mysql是否安裝成功
rpm -qa | grep mysql啟動 mysql 服務
systemctl start mysqld.service #啟動 mysql systemctl restart mysqld.service #重啟 mysql systemctl stop mysqld.service #停止 mysql systemctl enable mysqld.service #設置 mysql 開機啟動設置密碼
root 用戶的密碼默認是空的,需要及時用 mysql 的 root 用戶登錄
mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("這里輸入root用戶密碼") where User='root'; mysql> flush privileges;CentOS7下使用YUM安裝MySQL5.6
設置遠程主機登錄
這個非常重要,如果不設置的話,就算你php配置文件都對,但是還是連接不到數據庫的,一定要注意
mysql> use mysql mysql> select host,user,password from user;修改host字段的值,將localhost修改成需要遠程連接數據庫的ip地址,或者直接修改成%。修改成%表示,所有主機都可以通過root用戶訪問數據庫
mysql> update user set host = '%' where user = 'root'; mysql> FLUSH PRIVILEGES;修改之后,即可連接成功
Host ‘xxx’ is not allowed to connect to this MySQL server.
MySQL安裝好之后,就來安裝apache,在CentOS和RHEL上,Apache軟件包和服務稱為httpd
安裝完成后,啟用并啟動Apache服務:
sudo systemctl enable httpd sudo systemctl start httpd下載php,這里我下載的版本是5.6的,如果之后web題涉及到了弱類型,這個版本的php就可以
yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi yum install --enablerepo=remi --enablerepo=remi-php56 php php-gd php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php -vcentOs7 yum安裝php5.6(史上最簡)
下載好之后,原本打算再安裝一個phpmyadmin,但是爆出了下面的錯誤,就是安裝不了,反正也不是特別需要就不安裝了
至此基本就可以了,將你的題目放到/var/www/html目錄下,這里還要設置一下目錄權限
設置好就可以,反正有人遍歷目錄,啟動一下Hive-ctfd
發現報錯。。。。
原因也很簡單,就是因為apache占用了80端口,所以我們需要更改一下apache的默認端口即可
最后再補充一點:
在Linux中如何導入sql文件
mysql -u 用戶名 -p 數據庫名 < 數據庫名.sql #這個只是其中的一種方法- 如果你的配置文件中的主機、賬號、密碼什么的都對,但還是無法連接,就一定是你在安裝MySQL時沒有設置遠程連接
- 如果發現訪問題目時,php源碼都直接出現,沒有解析,最簡單的方法,重新啟動一下apache服務即可sudo systemctl restart httpd
至此,就全部搭建完畢了,寫的時候真的感覺不難,但畢竟是第一次搭建,真的也學到不少知識
就記錄到這里吧!
總結
以上是生活随笔為你收集整理的搭建H1ve-ctfd以及如何部署题目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP代码审计之旅
- 下一篇: 【BJDCTF 2nd—MISC/Cry