安全滲透基礎測試題,考點涉及到 HTML、PHP、MySQL、SQL 注入、XSS 攻擊、CTF、Python 等
隨機題庫程式碼
將以下程式碼儲存成 1.py 檔案,執行之,根據隨機到的編號做對應的題目
#!/usr/bin/python# -*- coding:utf-8 -*-import randomI=["I1","I2"] # SQL XSS PHP JavaScript HTMLII=["II1","II2"] # PythonIII=["III1","III2"] # LiunxIV=["IV1","IV2"] # PHP MySQLV=["V1","V2"] # CTFVI=["VI1","VI2"] # CTFresult=[]i = random.sample(I,1)result.append(i)ii = random.sample(II,1)result.append(ii)iii = random.sample(III,1)result.append(iii)iv = random.sample(IV,1)result.append(iv)v = random.sample(V,1)result.append(v)vi = random.sample(VI,1)result.append(v)print result
注意要點認真讀題,使用相關的虛擬環境,需標明做的題目的任務名執行指令碼,會得到六個任務的編號,按編號答題,每個任務互不干擾按要求提交相關 FLAG 字串或者 Wireup 或者相關截圖每個任務至少 3 張截圖,只需擷取關鍵步驟即可,題目有要求截圖的不可省略CTF 題輔以 Wireup 提交,Wireup 只需寫出關鍵步驟答案請新建一個文件,寫在文件裡進行提交時間控制在 6 小時以內虛擬環境 => 【Ubuntu - server.7z】任務書【I1:SQL 注入漏洞檢測】
【I1:SQL 注入漏洞檢測】
虛擬環境:Ubuntu-server
系統搭建 PHP + MySQL 環境;賬號:root;密碼:root
考點:PHP 程式碼稽核;MD5 密碼破解;排序行 SQL 注入漏洞檢測
將虛擬機器環境還原快照至 WEB,登入系統,並使用 find 命令全盤尋找 login.php 檔案絕對路徑,將其絕對路徑作為 FLAG1 字串提交(形式:FLAG1=login.php 檔案絕對路徑)。答案:FLAG1=/var/www/html/login.php
閱讀 login.php 檔案,尋找變數將會提交至哪個 PHP 檔案,將該提交資料的檔案絕對路徑作為 F1;尋找 login.php 檔案中的將會被提交的變數 F2,F3,F4。提交 FLAG2 字串(形式:FLAG2=F1;F2;F3;F4)。答案:FLAG2=/var/www/html/check.php;username;password;submit
閱讀 login.php 檔案相關的 PHP 檔案,尋找連線的 MySQL 資料庫名 F1,資料庫賬號 F2,資料庫密碼 F3,使用者資訊儲存的資料表 F4。提交 FLAG3 字串(形式:FLAG3=F1;F2;F3;F4)。答案:FLAG3=czjt;root;root;users
使用上一題的賬號和密碼進入資料庫,尋找允許登入 WEB 漏洞系統的賬號 F1 和解密之後的密碼 F2,MD5 解密可訪問 md5.php 。提交 FLAG4 字串(形式:FLAG4=F1;F2)。答案: FLAG4=admin;@dmin
點選 SQL Injection 進入 SQL 注入測試頁,對其頁面進行 SQL 注入測試,使其資料以 age 欄位為倒序排列形式。提交 FLAG5 字串(形式:FLAG5=?order=payload)(tip:payload 必須含有正序排列或倒序排列 SQL 查詢語句關鍵詞,欄位名必須含有反引號;輔以截圖證明)。答案: FLAG5=?order=age` desc%23
繼續對其頁面進行 SQL 注入測試,使其資料先以 name 欄位為首要欄位倒序排列,再以 age 欄位為次要欄位正序排列。提交 FLAG6 字串(形式:FLAG6=?order=payload)(tip:payload 必須含有正序排列和倒序排列 SQL 查詢語句關鍵詞,欄位名必須含有反引號;輔以截圖證明)。答案: FLAG6=?order=name desc, age` asc%23
【I2:XSS 攻擊與防護】
虛擬環境:Ubuntu-server
賬號:root;密碼:root
考點:DOM 型 XSS 攻擊;PHP 安全配置;HttpOnly 的設定;PHP、JavaScript 程式碼編寫
將虛擬機器環境還原快照至 WEB,使用賬號 admin,密碼 @dmin 登入 login.php ,點選 DOM Based XSS 進入 DOM 型 XSS 檢測頁面,使用 payload1 可以使瀏覽器執行彈窗事件,彈窗內容為 XSS 。提交 FLAG1 字串(形式:FLAG1=xss.php#payload1)(tip:輔以截圖證明)。答案: FLAG1=xss.php#%3cscript%3ealert(%27xss%27)%3c%2fscript%3e
繼續檢測 DOM 型 XSS,使用 payload2 可以獲取當前的 cookie 資訊。提交 FLAG2 字串(形式:FLAG2=xss.php#payload2)。答案: FLAG2=xss.php#%3cscript%3ealert(document.cookie)%3c%2fscript%3e
訪問 phpinfo.php 頁面,獲取 php.ini 的絕對路徑 F1,在 php.ini 中配置全域性的 HttpOnly,設該該行配置項為 F2。提交 FLAG3 字串(形式:FLAG3=F1;F2)。答案: FLAG3=/etc/php/7.0/apache2/php.ini;session.cookie_httponly = true
在 /var/www/html 中尋找設定 cookie 的 PHP 頁面,設該頁面的絕對路徑為 F1,修改設定 cookie 的 HttpOnly 屬性,使其不再被 JavaScript 指令碼獲取,設修改 cookie 屬性所在行的 PHP 程式碼為 F2,修改之後,清除瀏覽器儲存的 cookie 資訊,再次使用 payload2 獲取 cookie 資訊,可以獲取到則 F3=TRUE,不可以獲取到則 F3=FALSE。提交 FLAG4 字串(形式:FLAG4=F1;F2;F3)(tip:輔以截圖證明)。答案: FLAG4=/var/www/html/check.php;setcookie(“uname”,$uname,time()+3600,NULL,NULL,NULL,true);;FALSE
將 xss.php 頁面中的所有註釋去掉,完善該程式碼,使其能夠抵禦 DOM 型 XSS 攻擊。提交 FALG5 字串。(形式:FLAG5=F1,F2)。答案: FLAG5=safeStr;name
將 xss.php 頁面中的所有註釋去掉,完善該程式碼,使其能夠抵禦 DOM 型 XSS 攻擊。提交 FALG6 字串。(形式:FLAG6=F3,F4)。答案: FLAG6=str;replace
再次使用 payload1 進行 DOM 型 XSS 攻擊,可以執行 JavaScript 彈窗到則 FLAG7=TRUE,不可以執行 JavaScript 彈窗則 FLAG7=FALSE。。提交 FALG6 字串。(形式:FLAG7=TRUE or FALSE)(tip:輔以截圖證明)。答案: FLAG7=FALSE
【II1:本地作業系統登入密碼爆破】
虛擬環境:Ubuntu-server;自備虛擬環境:kali
系統搭建 Python 環境;賬號:root;密碼:未知
考點:Python 程式碼稽核以及完善;liunx 密碼複雜性配置;使用 Python 爆破使用者登入密碼
將虛擬機器環境還原快照至作業系統密碼爆破,在 root 的家目錄裡有個名為 liunx_passwd.py程式碼,程式碼功能為爆破當前作業系統中的 root 密碼。使用命令 F1 (tip:不得數字形式表示許可權)可為該檔案新增執行許可權,設 F2 (tip:以數字形式表示許可權)為執行 F1 之後該檔案的許可權,在 /etc/shadow 檔案中尋找 root 的加密密碼 F3(tip:包含第一個 與包含最後一個與包含最後一個 之間的字串)。提交 FLAG1 字串(形式:FLAG1=F1;F2;f3)。答案: FLAG1=chmod +x ./liunx_passwd.py;755;66Hr1Yyz9f$
完善 liunx_passwd.py 程式碼,破解密碼字典使用根目錄下 password.lst 。提交 FLAG2 字串。(形式:FLAG2=F1;F2)。答案: FLAG2=”/etc/shadow”;”/password.lst”
完善 liunx_passwd.py 程式碼,破解密碼字典使用根目錄下 password.lst 。提交 FLAG3 字串。(形式:FLAG3=F3;F4)。答案: FLAG3=passwords;passwd
完善 liunx_passwd.py 程式碼,破解密碼字典使用根目錄下 password.lst 。提交 FLAG4 字串。(形式:FLAG3=F5;F6;F7)。答案: FLAG4=username;rootpassword;password
執行 liunx_passwd.py 程式碼,將結果返回的最後一行作為 FLAG5 提交。(形式:FLAG5=返回的最後一行)(tip:輔以截圖證明)。答案: FLAG5=I find it, root password is p@ssw0rd
修改 /etc/pam.d/system-auth 檔案中的密碼複雜性,最少不同字元 3 個,最小密碼長度為 8,最少大寫字母為 1。將以上設定的該行作為 FLAG6 提交。(形式:FLAG6=設定的該行內容)。答案: FLAG6=password requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1
按照密碼複雜性要求重新設定密碼,並再次執行 liunx_passwd.py 程式碼,將結果返回的最後一行作為 FLAG7 提交。(形式:FLAG7=返回的最後一行)(tip:輔以截圖證明)。答案: FLAG7=serching is failed
【II2:Python 編碼與轉碼】
虛擬環境:Ubuntu-server;
系統搭建 Python 環境;賬號:root;
考點:Python 程式碼編寫基礎;Python 編碼、Python 轉碼
將虛擬機器環境還原快照至 Python,編寫 Python 程式碼,實現功能:URL 的編碼和轉碼,base64 的編碼和轉碼,提交 python 程式碼。編寫 Python 程式碼,實現功能:將 IP 地址轉換成 16 進位制數,將 IP 地址從主機位元組序轉換成網路序,將網路序轉回主機位元組序,提交 python 程式碼。編寫 Python 程式碼,實現功能:MD5 加密(要求生成 32 位大小寫,16 位大小寫四種情況),提交 python 程式碼。答案: 該任務不提供答案,請自行百度
【III1:Liunx 服務安全配置】
虛擬環境:Ubuntu-server;自備虛擬環境:kali
系統搭建 SSH 服務、Apache 服務、FTP 服務;賬號:root;密碼:root
考點:Ubuntu 下的 SSH 服務、Apache 服務、FTP 服務的簡單安全配置
將虛擬機器環境還原快照至服務安全配置,使用 find 命令全盤搜尋 SSH 服務主配置檔案 F1,Apache 服務主配置檔案 F2,FTP 服務主配置檔案 F3,將其服務配置檔案絕對路徑作為 FLAG1 字串提交(形式:FLAG1=F1;F2;F3)。答案: FLAG1=/etc/ssh/sshd_config;/etc/apache2/apache2.conf;/etc/vsftpd.conf
配置 SSH 服務禁止 root 使用者登入,設該行的配置為 F1,使用 kali 進行 SSH 登入測試,設登入結果的最後一行為 F2。提交 FLAG2 字串。(形式:FLAG2=F1;F2)(tip:輔以截圖證明)。答案: FLAG2=PermitRootLogin no;Permission denied, please try again.
建立使用者 user,設建立使用者命令為 F1,配置只允許 user 使用者登入 SSH,設該行的配置為 F2,使用 kali 進行 SSH 登入測試,設登入之後即輸入密碼之後的第一行為 F3。提交 FLAG3 字串。(形式:FLAG3=F1;F2;F3)。答案: FLAG3=addusser user;AllowUsers user;user@ubuntu:~$
獲取 Apache 的版本號 F1,配置 Apache 服務安全,使其不再顯示版本號資訊,設該行的配置為 F2,設該配置檔案的絕對路徑為 F3,設 404 頁面返回的文字內容為 F4(tip:F4 為截圖)。提交 FLAG4 字串。(形式:FLAG4=F1;F2;F3;F4)。答案: FLAG4=2.4.18;ServerSignature Off;/etc/apache2/conf-available/security.conf;以截圖為準
建立目錄 /home/www ,修改 Apache 預設網站目錄為 /home/www ,設該行的配置為 F1,設該配置檔案的絕對路徑為 F2。提交 FLAG5 字串。(形式:FLAG5=F1;F2)。答案: FLAG5=DocumentRoot /home/www;/etc/apache2/sites-available/000-default.conf
使用匿名使用者登入 FTP 服務,設此時登入之後即輸入密碼之後的第一行為 F1,配置禁止匿名使用者登入,設該行的配置為 F2,再次使用匿名使用者登入 FTP 服務,設此時登入之後即輸入密碼之後的第一行的顯示結果為 F3。提交 FLAG6 字串。(形式:FLAG6=F1;F2;F3)(tip:輔以截圖證明)。答案: FLAG6=230 Login successful.;anonymous_enable=NO;530 Login incorrect.
【III2:Liunx 基礎命令和基礎加固】
虛擬環境:Ubuntu-server;
考點:Liunx 基礎命令的使用
將虛擬機器環境還原快照至初始狀態,建立一個測試使用者 test,設建立使用者命令為 F1,建立一個測試使用者組為 testGroup,設建立使用者組命令為 F2,設定 test 使用者的附屬組為 testGroup,設修改使用者屬性命令為 F3。提交 FLAG1 字串。(形式:FLAG1=F1;F2;F3)。答案: FLAG1=addusser test;groupadd testGroup;usermod -G testGroup test
配置 test 使用者能夠無密碼切換至 root 使用者,設配置檔案的絕對路徑為 F1,設該行配置項為 F2,切換至 test 使用者,命令 F3 可以使 test 使用者無密碼切換至 root 使用者。提交 FLAG2 字串(形式:FLAG2=F1;F2;F3)(tip:輔以截圖證明)。答案: FLAG2=test ALL=(ALL:ALL) ALL;/etc/sudoers;sudo su 或者 sudo -s
配置普通使用者不得使用 su 切換至 root 使用者,設配置檔案的絕對路徑為 F1,設該行配置項為 F2。提交 FLAG3 字串。(形式:FLAG3=F1;F2)。答案: FLAG3=/etc/pam.d/su;auth required pam_wheel.so
root 目錄中有個檔案是專門用來存放 BASH 歷史操作命令的檔案,設該檔案的絕對路徑為 F1,命令 F2,F3 可以使該檔案不再儲存 BASH 歷史操作。提交 FLAG4 字串。(形式:FLAG4=F1,F2,F3)。答案: FLAG4=/root/.bash_history;rm /root/.bash_history;ln -s /dev/null /root/.bash_history
命令 F1 可以檢視當前的網路狀況,命令 F2 可以檢視當前程序,命令 F3 可以檢視當前的網絡卡資訊。提交 FLAG5 字串。(形式:FLAG5=F1,F2,F3)。答案: FLAG5=netstat -tulnp;ps -au;ifconfig
命令 F1 可以使 /etc/passwd 不被刪除,不被更改,命令 F2 可以檢視 /etc/passwd 當前的特殊許可權,隨意建立一個使用者,設其報錯資訊為 F3(tip:F3 為截圖)。提交 FLAG6 字串。(形式:FLAG5=F1,F2,F3)(tip:輔以截圖證明)。答案: FLAG6=chattr +i /etc/passwd;lsattr /etc/passwd;以實際截圖為準
【IV1:PHP + MySQL 服務安全配置】
虛擬環境:Ubuntu-server;自備虛擬環境:kali
系統搭建 PHP + MySQL 環境;賬號:root;密碼:root
考點:PHP 安全配置;MySQL 安全配置;MySQL 本地檔案讀取
將虛擬機器環境還原快照至 PHP + MySQL 服務安全配置,訪問網站中的 phpinfo.php 檔案,獲取 PHP 的版本號 F1,獲取 php.ini 的絕對路徑 F2。提交 FLAG1 字串。(形式:FLAG1=F1;F2)。答案: FLAG1=7.0.22;/etc/php/7.0/apache2/php.ini
修改 php.ini 檔案,開啟 php 的安全模式,設該配置項為 F1,設定安全模式下執行程式主目錄為 /var/www/html ,設該配置項為 F2。提交 FLAG2 字串。(形式:FLAG2=F1;F2)。答案: FLAG2=safe_mode = on;safe_mode_exec_dir = /var/www/html
修改 php.ini 檔案,禁用函式 system,passthru,exec,shell_exec,popen,phpinfo ,將該配置項作為 FLAG3 提交。(形式:FLAG3=禁用函式配置項)。答案: FLAG3=disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
關閉 PHP 版本資訊在 http 頭中的洩漏,設該配置項為 F1,配置放置 SQL 注入,設該配置項為 F2。提交 FLAG4 字串。(形式:FLAG4=F1;F2)。答案: FLAG4=expose_php = Off;magic_quotes_gpc = On
連線本地 MySQL 資料庫,賬號密碼皆為 root,執行 SQL 查詢語言獲取 MySQL 的版本號資訊,設查詢語句為 F1,設 MySQL 的版本號資訊為 F2。提交 FLAG5 字串。(形式:FLAG5=F1;F2)(tip:輔以截圖證明)。答案: FLAG5=select version();;5.7.19-0ubuntu0.16.04.1
root 家目錄中有一個檔案 user.txt ,MySQL 資料庫中有個名為 czjt 的資料庫,資料庫 czjt 中有張名為 users 的資料表,想辦法透過 load data local infile 的相關 SQL 查詢命令將 user.txt 文字內容匯入至資料表。將該 SQL 查詢命令作為 FLAG6 提交。(形式:FLAG6=SQL 讀取檔案命令)。答案: FLAG6=load data local infile ‘/root/user.txt’ into table czjt.users fields terminated by ‘,’;
禁止 MySQL 對本地檔案存取,設該行配置項為 F1,再次進行本地檔案讀取,設報錯 ERROR 該行為 F2(F2 為截圖),設改配置檔案的絕對路徑為 F3。提交 FLAG7 字串。(形式:FLAG7=F1;F2;F3)。答案: FLAG7=local-infile=0;以實際截圖為準;/etc/mysql/conf.d/mysql.cnf
【IV2:MySQL 基礎操作和基礎加固】
虛擬環境:Ubuntu-server;自備虛擬環境:kali
賬號:root;密碼:root
考點:SQL 查詢語句;MySQL 加固
將虛擬機器環境還原快照至 PHP + MySQL 服務安全配置,連線本地 MySQL 資料庫,設連線命令為 F1,賬號密碼皆為 root,執行 SQL 查詢語言獲取 MySQL 的版本號資訊,設查詢語句為 F2,設 MySQL 的版本號資訊為 F3。提交 FLAG1 字串。(形式:FLAG1=F1;F2;F3)。答案: FLAG1=mysql -p;`select version();;5.7.19-0ubuntu0.16.04.1
SQL 語句 FLAG2 可以修改 root 密碼為 p@ssw0rd。提交 FLAG2 字串。(形式:FLAG2=修改 root 密碼的 SQL 語句)。答案: FLAG2=update mysql.user set password=password(‘p@ssw0rd’) where user=’root’;
SQL 語句 F1 可以獲取當前的所有資料庫,SQL 語句 F2 可以切換資料庫至 czjt,SQL 語句 F3 可以檢視 czjt 中有哪些表,SQL 語句 F4 可以檢視 users 表中的所有資料。(形式:FLAG3=F1;F2;F3;F4)。答案: FLAG3=show databases;;use czjt;;show tables;;select from users; 或者 select from czjt.users;
使用 find 命令全盤搜尋 MySQL 的主配置檔案,提交 FLAG4 字串。(形式:FLAG4=MySQL 的主配置檔案的絕對路徑)。答案: FLAG4=/etc/mysql/my.cnf
使用 kali 遠端連線該 MySQL 資料庫,設連線命令為 F1(F1 為截圖),配置 MySQL 服務禁止被遠端連線,設該配置項為 F2,再次遠端連線將,設報錯資訊為 F3(F3 為截圖)。(形式:FLAG5=F1,F2,F3)(tip:輔以截圖證明)。答案: FLAG5=以實際截圖為準;skip-networking;以實際截圖為準
系統中有個檔案是專門用來存放 MySQL 歷史操作命令的檔案,設該檔案的絕對路徑為 F1,命令 F2,F3 可以使該檔案不再儲存 MySQL 歷史操作命令。提交 FLAG6 字串。(形式:FLAG6=F1,F2,F3)。答案: FLAG6=/root/.mysql_history;rm /root/.mysql_history;ln -s /dev/null /root/.mysql_history
【V1:密碼學、隱寫術】
虛擬環境:Ubuntu-server;自備虛擬環境:kali
賬號:root;密碼:root
考點:密碼學、隱寫術 此任務提交 Wireup
ctf.phpctf.phpctf.phpctf.php
答案: 該任務裡的題目皆摘錄至實驗吧,不提供 Wireup
【V2:安全雜項、程式設計】
虛擬環境:Ubuntu-server;自備虛擬環境:kali
賬號:root;密碼:root
考點:安全雜項、python 程式設計 此任務提交 Wireup
ctf.phpctf.phpctf.phpctf.php
答案: 該任務裡的題目皆摘錄至實驗吧,不提供 Wireup
【VI1:網站綜合滲透】
考點: SQL 注入;菜刀的使用;獲取 shell;HASH 值暴力破解
此任務提交 Wireup