安全渗透基础测试题

安全渗透基础测试题,考点涉及到 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

注意要点

  1. 认真读题,使用相关的虚拟环境,需标明做的题目的任务名
  2. 运行脚本,会得到六个任务的编号,按编号答题,每个任务互不干扰
  3. 按要求提交相关 FLAG 字符串或者 Wireup 或者相关截图
  4. 每个任务至少 3 张截图,只需截取关键步骤即可,题目有要求截图的不可省略
  5. CTF 题辅以 Wireup 提交,Wireup 只需写出关键步骤
  6. 答案请新建一个文档,写在文档里进行提交
  7. 时间控制在 6 小时以内
  8. 虚拟环境 => 【Ubuntu - server.7z】(链接:http://pan.baidu.com/s/1c1QLXo0 密码:vb0k)

任务书

【I1:SQL 注入漏洞检测】

分值【50 分】

虚拟环境:Ubuntu-server

系统搭建 PHP + MySQL 环境;账号:root;密码:root

考点:PHP 代码审核;MD5 密码破解;排序型 SQL 注入漏洞检测

  1. 将虚拟机环境还原快照至 WEB,登入系统,并使用 find 命令全盘寻找 login.php 文件绝对路径,将其绝对路径作为 FLAG1 字符串提交(形式:FLAG1=login.php 文件绝对路径)。【5 分】

答案:FLAG1=/var/www/html/login.php

  1. 阅读 login.php 文件,寻找变量将会提交至哪个 PHP 文件,将该提交数据的文件绝对路径作为 F1;寻找 login.php 文件中的将会被提交的变量 F2,F3,F4。提交 FLAG2 字符串(形式:FLAG2=F1;F2;F3;F4)。【12 分】

答案:FLAG2=/var/www/html/check.php;username;password;submit

  1. 阅读 login.php 文件相关的 PHP 文件,寻找连接的 MySQL 数据库名 F1,数据库账号 F2,数据库密码 F3,用户信息存储的数据表 F4。提交 FLAG3 字符串(形式:FLAG3=F1;F2;F3;F4)。【12 分】

答案:FLAG3=czjt;root;root;users

  1. 使用上一题的账号和密码进入数据库,寻找允许登入 WEB 漏洞系统的账号 F1 和解密之后的密码 F2,MD5 解密可访问 md5.php。提交 FLAG4 字符串(形式:FLAG4=F1;F2)。【8 分】

答案: FLAG4=admin;@dmin

  1. 点击 SQL Injection 进入 SQL 注入测试页,对其页面进行 SQL 注入测试,使其数据以 age 字段为倒序排列形式。提交 FLAG5 字符串(形式:FLAG5=?order=payload)(tip:payload 必须含有正序排列或倒序排列 SQL 查询语句关键词,字段名必须含有反引号;辅以截图证明)。【5 分】

答案: FLAG5=?order=age` desc%23

  1. 继续对其页面进行 SQL 注入测试,使其数据先以 name 字段为首要字段倒序排列,再以 age 字段为次要字段正序排列。提交 FLAG6 字符串(形式:FLAG6=?order=payload)(tip:payload 必须含有正序排列和倒序排列 SQL 查询语句关键词,字段名必须含有反引号;辅以截图证明)。【8 分】

答案: FLAG6=?order=namedesc,age` asc%23

【I2:XSS 攻击与防护】

分值【50 分】

虚拟环境:Ubuntu-server

账号:root;密码:root

考点:DOM 型 XSS 攻击;PHP 安全配置;HttpOnly 的设置;PHP、JavaScript 代码编写

  1. 将虚拟机环境还原快照至 WEB,使用账号 admin,密码 @dmin 登录 login.php,点击 DOM Based XSS 进入 DOM 型 XSS 检测页面,使用 payload1 可以使浏览器执行弹窗事件,弹窗内容为 XSS。提交 FLAG1 字符串(形式:FLAG1=xss.php#payload1)(tip:辅以截图证明)。【5 分】

答案: FLAG1=xss.php#%3cscript%3ealert(%27xss%27)%3c%2fscript%3e

  1. 继续检测 DOM 型 XSS,使用 payload2 可以获取当前的 cookie 信息。提交 FLAG2 字符串(形式:FLAG2=xss.php#payload2)。【5 分】

答案: FLAG2=xss.php#%3cscript%3ealert(document.cookie)%3c%2fscript%3e

  1. 访问 phpinfo.php 页面,获取 php.ini 的绝对路径 F1,在 php.ini 中配置全局的 HttpOnly,设该该行配置项为 F2。提交 FLAG3 字符串(形式:FLAG3=F1;F2)。【8 分】

答案: FLAG3=/etc/php/7.0/apache2/php.ini;session.cookie_httponly = true

  1. /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:辅以截图证明)。【12 分】

答案: FLAG4=/var/www/html/check.php;setcookie(“uname”,$uname,time()+3600,NULL,NULL,NULL,true);;FALSE

  1. xss.php 页面中的所有注释去掉,完善该代码,使其能够抵御 DOM 型 XSS 攻击。提交 FALG5 字符串。(形式:FLAG5=F1,F2)。【8 分】

答案: FLAG5=safeStr;name

  1. xss.php 页面中的所有注释去掉,完善该代码,使其能够抵御 DOM 型 XSS 攻击。提交 FALG6 字符串。(形式:FLAG6=F3,F4)。【8 分】

答案: FLAG6=str;replace

  1. 再次使用 payload1 进行 DOM 型 XSS 攻击,可以执行 JavaScript 弹窗到则 FLAG7=TRUE,不可以执行 JavaScript 弹窗则 FLAG7=FALSE。。提交 FALG6 字符串。(形式:FLAG7=TRUE or FALSE)(tip:辅以截图证明)。【4 分】

答案: FLAG7=FALSE

【II1:本地操作系统登录密码爆破】

分值【50 分】

虚拟环境:Ubuntu-server;自备虚拟环境:kali

系统搭建 Python 环境;账号:root;密码:未知

考点:Python 代码审核以及完善;liunx 密码复杂性配置;使用 Python 爆破用户登录密码

  1. 将虚拟机环境还原快照至操作系统密码爆破,在 root 的家目录里有个名为 liunx_passwd.py 代码,代码功能为爆破当前操作系统中的 root 密码。使用命令 F1 (tip:不得数字形式表示权限)可为该文件添加执行权限,设 F2 (tip:以数字形式表示权限)为执行 F1 之后该文件的权限,在 /etc/shadow 文件中寻找 root 的加密密码 F3(tip:包含第一个 $ 与包含最后一个 $ 之间的字符串)。提交 FLAG1 字符串(形式:FLAG1=F1;F2;f3)。【8 分】

答案: FLAG1=chmod +x ./liunx_passwd.py;755;$6$Hr1Yyz9f$

  1. 完善 liunx_passwd.py 代码,破解密码字典使用根目录下 password.lst。提交 FLAG2 字符串。(形式:FLAG2=F1;F2)。【8 分】

答案: FLAG2=”/etc/shadow”;”/password.lst”

  1. 完善 liunx_passwd.py 代码,破解密码字典使用根目录下 password.lst。提交 FLAG3 字符串。(形式:FLAG3=F3;F4)。【8 分】

答案: FLAG3=passwords;passwd

  1. 完善 liunx_passwd.py 代码,破解密码字典使用根目录下 password.lst。提交 FLAG4 字符串。(形式:FLAG3=F5;F6;F7)。【10 分】

答案: FLAG4=username;rootpassword;password

  1. 执行 liunx_passwd.py 代码,将结果返回的最后一行作为 FLAG5 提交。(形式:FLAG5=返回的最后一行)(tip:辅以截图证明)。【6 分】

答案: FLAG5=I find it, root password is p@ssw0rd

  1. 修改 /etc/pam.d/system-auth 文件中的密码复杂性,最少不同字符 3 个,最小密码长度为 8,最少大写字母为 1。将以上设置的该行作为 FLAG6 提交。(形式:FLAG6=设置的该行内容)。【6 分】

答案: FLAG6=password requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1

  1. 按照密码复杂性要求重新设置密码,并再次执行 liunx_passwd.py 代码,将结果返回的最后一行作为 FLAG7 提交。(形式:FLAG7=返回的最后一行)(tip:辅以截图证明)。【4 分】

答案: FLAG7=serching is failed

【II2:Python 编码与转码】

分值【50 分】

虚拟环境:Ubuntu-server;

系统搭建 Python 环境;账号:root;

考点:Python 代码编写基础;Python 编码、Python 转码

  1. 将虚拟机环境还原快照至 Python,编写 Python 代码,实现功能:URL 的编码和转码,base64 的编码和转码,提交 python 代码。【15 分】
  2. 编写 Python 代码,实现功能:将 IP 地址转换成 16 进制数,将 IP 地址从主机字节序转换成网络序,将网络序转回主机字节序,提交 python 代码。【15 分】
  3. 编写 Python 代码,实现功能:MD5 加密(要求生成 32 位大小写,16 位大小写四种情况),提交 python 代码。【20 分】

答案: 该任务不提供答案,请自行百度

【III1:Liunx 服务安全配置】

分值【50 分】

虚拟环境:Ubuntu-server;自备虚拟环境:kali

系统搭建 SSH 服务、Apache 服务、FTP 服务;账号:root;密码:root

考点:Ubuntu 下的 SSH 服务、Apache 服务、FTP 服务的简单安全配置

  1. 将虚拟机环境还原快照至服务安全配置,使用 find 命令全盘搜索 SSH 服务主配置文件 F1,Apache 服务主配置文件 F2,FTP 服务主配置文件 F3,将其服务配置文件绝对路径作为 FLAG1 字符串提交(形式:FLAG1=F1;F2;F3)。【8 分】

答案: FLAG1=/etc/ssh/sshd_config;/etc/apache2/apache2.conf;/etc/vsftpd.conf

  1. 配置 SSH 服务禁止 root 用户登录,设该行的配置为 F1,使用 kali 进行 SSH 登录测试,设登录结果的最后一行为 F2。提交 FLAG2 字符串。(形式:FLAG2=F1;F2)(tip:辅以截图证明)。【8 分】

答案: FLAG2=PermitRootLogin no;Permission denied, please try again.

  1. 创建用户 user,设创建用户命令为 F1,配置只允许 user 用户登录 SSH,设该行的配置为 F2,使用 kali 进行 SSH 登录测试,设登录之后即输入密码之后的第一行为 F3。提交 FLAG3 字符串。(形式:FLAG3=F1;F2;F3)。【10 分】

答案: FLAG3=addusser user;AllowUsers user;user@ubuntu:~$

  1. 获取 Apache 的版本号 F1,配置 Apache 服务安全,使其不再显示版本号信息,设该行的配置为 F2,设该配置文件的绝对路径为 F3,设 404 页面返回的文本内容为 F4(tip:F4 为截图)。提交 FLAG4 字符串。(形式:FLAG4=F1;F2;F3;F4)。【12 分】

答案: FLAG4=2.4.18;ServerSignature Off;/etc/apache2/conf-available/security.conf;以截图为准

  1. 创建目录 /home/www,修改 Apache 默认网站目录为 /home/www,设该行的配置为 F1,设该配置文件的绝对路径为 F2。提交 FLAG5 字符串。(形式:FLAG5=F1;F2)。【6 分】

答案: FLAG5=DocumentRoot /home/www;/etc/apache2/sites-available/000-default.conf

  1. 使用匿名用户登录 FTP 服务,设此时登录之后即输入密码之后的第一行为 F1,配置禁止匿名用户登录,设该行的配置为 F2,再次使用匿名用户登录 FTP 服务,设此时登录之后即输入密码之后的第一行的显示结果为 F3。提交 FLAG6 字符串。(形式:FLAG6=F1;F2;F3)(tip:辅以截图证明)。【6 分】

答案: FLAG6=230 Login successful.;anonymous_enable=NO;530 Login incorrect.

【III2:Liunx 基础命令和基础加固】

分值【50 分】

虚拟环境:Ubuntu-server;

考点:Liunx 基础命令的使用

  1. 将虚拟机环境还原快照至初始状态,创建一个测试用户 test,设创建用户命令为 F1,创建一个测试用户组为 testGroup,设创建用户组命令为 F2,设置 test 用户的附属组为 testGroup,设修改用户属性命令为 F3。提交 FLAG1 字符串。(形式:FLAG1=F1;F2;F3)。【8 分】

答案: FLAG1=addusser test;groupadd testGroup;usermod -G testGroup test

  1. 配置 test 用户能够无密码切换至 root 用户,设配置文件的绝对路径为 F1,设该行配置项为 F2,切换至 test 用户,命令 F3 可以使 test 用户无密码切换至 root 用户。提交 FLAG2 字符串(形式:FLAG2=F1;F2;F3)(tip:辅以截图证明)。【10 分】

答案: FLAG2=test ALL=(ALL:ALL) ALL;/etc/sudoers;sudo su 或者 sudo -s

  1. 配置普通用户不得使用 su 切换至 root 用户,设配置文件的绝对路径为 F1,设该行配置项为 F2。提交 FLAG3 字符串。(形式:FLAG3=F1;F2)。【8 分】

答案: FLAG3=/etc/pam.d/su;auth required pam_wheel.so

  1. root 目录中有个文件是专门用来存放 BASH 历史操作命令的文件,设该文件的绝对路径为 F1,命令 F2,F3 可以使该文件不再保存 BASH 历史操作。提交 FLAG4 字符串。(形式:FLAG4=F1,F2,F3)。【8 分】

答案: FLAG4=/root/.bash_history;rm /root/.bash_history;ln -s /dev/null /root/.bash_history

  1. 命令 F1 可以查看当前的网络状况,命令 F2 可以查看当前进程,命令 F3 可以查看当前的网卡信息。提交 FLAG5 字符串。(形式:FLAG5=F1,F2,F3)。【8 分】

答案: FLAG5=netstat -tulnp;ps -au;ifconfig

  1. 命令 F1 可以使 /etc/passwd 不被删除,不被更改,命令 F2 可以查看 /etc/passwd 当前的特殊权限,随意创建一个用户,设其报错信息为 F3(tip:F3 为截图)。提交 FLAG6 字符串。(形式:FLAG5=F1,F2,F3)(tip:辅以截图证明)。【8 分】

答案: FLAG6=chattr +i /etc/passwd;lsattr /etc/passwd;以实际截图为准

【IV1:PHP + MySQL 服务安全配置】

分值【50 分】

虚拟环境:Ubuntu-server;自备虚拟环境:kali

系统搭建 PHP + MySQL 环境;账号:root;密码:root

考点:PHP 安全配置;MySQL 安全配置;MySQL 本地文件读取

  1. 将虚拟机环境还原快照至 PHP + MySQL 服务安全配置,访问网站中的 phpinfo.php 文件,获取 PHP 的版本号 F1,获取 php.ini 的绝对路径 F2。提交 FLAG1 字符串。(形式:FLAG1=F1;F2)。【8 分】

答案: FLAG1=7.0.22;/etc/php/7.0/apache2/php.ini

  1. 修改 php.ini 文件,开启 php 的安全模式,设该配置项为 F1,设置安全模式下执行程序主目录为 /var/www/html,设该配置项为 F2。提交 FLAG2 字符串。(形式:FLAG2=F1;F2)。【8 分】

答案: FLAG2=safe_mode = on;safe_mode_exec_dir = /var/www/html

  1. 修改 php.ini 文件,禁用函数 system,passthru,exec,shell_exec,popen,phpinfo,将该配置项作为 FLAG3 提交。(形式:FLAG3=禁用函数配置项)。【4 分】

答案: FLAG3=disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

  1. 关闭 PHP 版本信息在 http 头中的泄漏,设该配置项为 F1,配置防止 SQL 注入,设该配置项为 F2。提交 FLAG4 字符串。(形式:FLAG4=F1;F2)。【8 分】

答案: FLAG4=expose_php = Off;magic_quotes_gpc = On

  1. 连接本地 MySQL 数据库,账号密码皆为 root,执行 SQL 查询语言获取 MySQL 的版本号信息,设查询语句为 F1,设 MySQL 的版本号信息为 F2。提交 FLAG5 字符串。(形式:FLAG5=F1;F2)(tip:辅以截图证明)。【8 分】

答案: FLAG5=select version();;5.7.19-0ubuntu0.16.04.1

  1. root 家目录中有一个文件 user.txt,MySQL 数据库中有个名为 czjt 的数据库,数据库 czjt 中有张名为 users 的数据表,想办法通过 load data local infile 的相关 SQL 查询命令将 user.txt 文本内容导入至数据表。将该 SQL 查询命令作为 FLAG6 提交。(形式:FLAG6=SQL 读取文件命令)。【4 分】

答案: FLAG6=load data local infile ‘/root/user.txt’ into table czjt.users fields terminated by ‘,’;

  1. 禁止 MySQL 对本地文件存取,设该行配置项为 F1,再次进行本地文件读取,设报错 ERROR 该行为 F2(F2 为截图),设改配置文件的绝对路径为 F3。提交 FLAG7 字符串。(形式:FLAG7=F1;F2;F3)。【10 分】

答案: FLAG7=local-infile=0;以实际截图为准;/etc/mysql/conf.d/mysql.cnf

【IV2:MySQL 基础操作和基础加固】

分值【50 分】

虚拟环境:Ubuntu-server;自备虚拟环境:kali

账号:root;密码:root

考点:SQL 查询语句;MySQL 加固

  1. 将虚拟机环境还原快照至 PHP + MySQL 服务安全配置,连接本地 MySQL 数据库,设连接命令为 F1,账号密码皆为 root,执行 SQL 查询语言获取 MySQL 的版本号信息,设查询语句为 F2,设 MySQL 的版本号信息为 F3。提交 FLAG1 字符串。(形式:FLAG1=F1;F2;F3)。【10 分】

答案: FLAG1=mysql -p;`select version();;5.7.19-0ubuntu0.16.04.1

  1. SQL 语句 FLAG2 可以修改 root 密码为 p@ssw0rd。提交 FLAG2 字符串。(形式:FLAG2=修改 root 密码的 SQL 语句)。【5 分】

答案: FLAG2=update mysql.user set password=password(‘p@ssw0rd’) where user=’root’;

  1. SQL 语句 F1 可以获取当前的所有数据库,SQL 语句 F2 可以切换数据库至 czjt,SQL 语句 F3 可以查看 czjt 中有那些表,SQL 语句 F4 可以查看 users 表中的所有数据。(形式:FLAG3=F1;F2;F3;F4)。【12 分】

答案: FLAG3=show databases;;use czjt;;show tables;;select from users;或者 select from czjt.users;

  1. 使用 find 命令全盘搜索 MySQL 的主配置文件,提交 FLAG4 字符串。(形式:FLAG4=MySQL 的主配置文件的绝对路径)。【5 分】

答案: FLAG4=/etc/mysql/my.cnf

  1. 使用 kali 远程连接该 MySQL 数据库,设连接命令为 F1(F1 为截图),配置 MySQL 服务禁止被远程连接,设该配置项为 F2,再次远程连接将,设报错信息为 F3(F3 为截图)。(形式:FLAG5=F1,F2,F3)(tip:辅以截图证明)。【10 分】

答案: FLAG5=以实际截图为准;skip-networking;以实际截图为准

  1. 系统中有个文件是专门用来存放 MySQL 历史操作命令的文件,设该文件的绝对路径为 F1,命令 F2,F3 可以使该文件不再保存 MySQL 历史操作命令。提交 FLAG6 字符串。(形式:FLAG6=F1,F2,F3)。【8 分】

答案: FLAG6=/root/.mysql_history;rm /root/.mysql_history;ln -s /dev/null /root/.mysql_history

【V1:密码学、隐写术】

分值【50 分】

虚拟环境:Ubuntu-server;自备虚拟环境:kali

账号:root;密码:root

考点:密码学、隐写术 此任务提交 Wireup

  1. 将虚拟机环境还原快照至 WEB,访问 ctf.php,完成 Crypto10,提交 FLAG1 字符串。【10 分】
  2. 访问 ctf.php,完成 Crypto20,提交 FLAG2 字符串。【15 分】
  3. 访问 ctf.php,完成 Stegano10,提交 FLAG3 字符串。【10 分】
  4. 访问 ctf.php,完成 Stegano20,提交 FLAG4 字符串。【15 分】

答案: 该任务里的题目皆摘录至实验吧,不提供 Wireup

【V2:安全杂项、编程】

分值【50 分】

虚拟环境:Ubuntu-server;自备虚拟环境:kali

账号:root;密码:root

考点:安全杂项、python 编程 此任务提交 Wireup

  1. 将虚拟机环境还原快照至 WEB,访问 ctf.php,完成 misc10,提交 FLAG5 字符串。【10 分】
  2. 访问 ctf.php,完成 misc20,提交 FLAG6 字符串。【15 分】
  3. 访问 ctf.php,完成 progra10,提交 FLAG7 字符串。【10 分】
  4. 访问 ctf.php,完成 progra20,提交 FLAG8 字符串。【15 分】

答案: 该任务里的题目皆摘录至实验吧,不提供 Wireup

【VI1:网站综合渗透】

分值【50 分】

考点: SQL 注入;菜刀的使用;获取 shell;HASH 值暴力破解

此任务提交 Wireup

  1. 访问 我很简单,请不要欺负我,完成该挑战。【50 分】

答案: 该任务摘录至 i 春秋,不提供 Wireup

【VI2:黑客游戏】

分值【50 分】

考点:HTML+JavaScript 代码审核、隐写术、编码、SQL 简单注入

此任务提交 Wireup

  1. 访问 黑客游戏,完成所有关卡。【50 分】

答案: 该任务不提供答案,请自行百度

亲!!! 听说给作者打赏一杯咖啡钱,会给自己带来好运哦!