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