安全渗透基础测试题,考点涉及到 HTML、PHP、MySQL、SQL 注入、XSS 攻击、CTF、Python 等
随机题库代码
将以下代码保存成 1.py 文件,运行之,根据随机到的编号做对应的题目
!/usr/bin/python
-- coding:utf-8 --
import random
I=["I1","I2"] # SQL XSS PHP JavaScript HTML
II=["II1","II2"] # Python
III=["III1","III2"] # Liunx
IV=["IV1","IV2"] # PHP MySQL
V=["V1","V2"] # CTF
VI=["VI1","VI2"] # CTF
result=[]
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 注入漏洞检测】
虚拟环境: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.php
ctf.php
ctf.php
ctf.php
答案: 该任务里的题目皆摘录至实验吧,不提供 Wireup
【V2:安全杂项、编程】
虚拟环境:Ubuntu-server;自备虚拟环境:kali
账号:root;密码:root
考点:安全杂项、python 编程 此任务提交 Wireup
ctf.php
ctf.php
ctf.php
ctf.php
答案: 该任务里的题目皆摘录至实验吧,不提供 Wireup
【VI1:网站综合渗透】
考点: SQL 注入;菜刀的使用;获取 shell;HASH 值暴力破解
此任务提交 Wireup