题目位置:https://www.nssctf.cn/上有
1. 签到题
题目描述:
此时正在进行的可能是__________协议的网络攻击。(如有字母请全部使用小写,填写样例:http、dns、ftp)。得到的flag请使用NSSCTF{}格式提交。
分析:此时正在进行的可能是__协议的网络攻击。
wireshark打开下载的附件Good.pcapng
查看统计出的协议分级
在TCP协议里HTTP协议占了大部分。
过滤http协议,发现大量的403返回提示请求失败
答案:NSSCTF{http}
小结
- 考察流量包中的协议统计:Wireshark -> 统计 -> 协议分级。
- HTTP,全称是 HyperText Transfer Protocol,中文叫做超文本传输协议。它是一种用于分布式、协作式和超媒体信息系统的应用层协议。
- HTTP 协议是应用层协议,主要解决如何包装数据,是基于TCP连接的。
2. jwt
题目描述:
昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:(如有字母请全部使用小写)。得到的flag请使用NSSCTF{}格式提交。
- 该网站使用了______认证方式。(如有字母请全部使用小写)。得到的flag请使用NSSCTF{}格式提交。
- 黑客绕过验证使用的jwt中,id和username是______。(中间使用#号隔开,例如1#admin)。得到的flag请使用NSSCTF{}格式提交。
- 黑客获取webshell之后,权限是______?。得到的flag请使用NSSCTF{}格式提交。
- 黑客上传的恶意文件文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)。得到的flag请使用NSSCTF{}格式提交。
- 黑客在服务器上编译的恶意so文件,文件名是_____________。(请提交带有文件后缀的文件名,例如x.so)。得到的flag请使用NSSCTF{}格式提交。
- 黑客在服务器上修改了一个配置文件,文件的绝对路径为_____________。(请确认绝对路径后再提交)。得到的flag请使用NSSCTF{}格式提交。
析1:该网站使用了__认证方式。
wireshark打开下载的附件goroot.pcapng,追踪TCP流,在tcp.stream eq 1 发现通过token认证登录
答案:NSSCTF{jwt}
小结
- 常见的登录认证方式:OAuth 令牌授权、Cookie\Session认证、Token认证。
- 基于JWT的Token认证:JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。 JWT是由三段信息构成的,将这三段信息文本用小数点连接就构成了Jwt字符串。
- JWT组成:第一部分header,放入token的类型(“JWT”)和算法名称(RS256等);第二部分payload,放入用户的不敏感信息(用户id等);第三部分signature,根据不公开的秘钥加上header中声明的算法,生成特定的签名。最终三部分组合起来即形成了token,发送给客户端。
析2:黑客绕过验证使用的jwt中,id和username是__。(中间使用#号隔开)
执行whoami时,前面都提示需要管理员权限
在tcp.stream eq 10中,执行命令成功回显root,因此该处的token为所需的数据。
对应的token为:
token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODcsIk1hcENsYWltcyI6eyJ1c2VybmFtZSI6ImFkbWluIn19.rurQD5RYgMrFZow8r-k7KCP13P32sF-RpTXhKsxzvD0
对其进行base64解密:
答案:NSSCTF{10087#admin}
小结
- JWT的token认证生成: jwt生成的token是由三段字符串拼接而成,使用.连接起来。
- 第一、二部分可以通过Base64解密得到,但第三部分不可以!
当前题目中:
token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0.dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc
- token的第一段字符串:由json数据{“alg”:“HS256”,“typ”:“JWT”}通过base64(可逆)加密算法得到。
"alg": "HS256" //第三段字符串的不可逆加密类型HS256
"typ": "JWT" //token类型JWT
- token的第二段字符串:是由payload信息{“id”:10087,“MapClaims”:{“username”:“admin”}}通过base64(可逆)加密算法得到。
payload信息为自定义值,一般不放敏感信息
"id":10087 //用户id
"MapClaims" //这是一个嵌套的JSON对象,其中包含了特定的声明(claims)。在JWT(JSON Web Tokens)和其他认证协议中,声明是用来传递有关主题(通常是用户)的信息。
"username":"admin" //用户名信息
- token的第三段字符串构成:先将第一段和第二段的密文拼接起来,然后对拼接起来的密文字符串和自定义的盐进行上边指定的HS256加密,最后对HS256加密后的密文再做base64加密。
析3:黑客获取webshell之后,权限是__。
根据第二小题中,可知最终提权得到的管理员用户是root。
在TCP流tcp.stream eq 30中,查看/tmp目录时也得到了验证:
答案:NSSCTF{root}
析4:黑客上传的恶意文件文件名是__。(请提交带有文件后缀的文件名)
在TCP流tcp.stream eq 13中,将命令执行结果传入了/tmp/1.c文件中:
答案:NSSCTF{1.c}
析5:黑客在服务器上编译的恶意so文件,文件名是__。(请提交带有文件后缀的文件名)
在tcp.stream eq 16中,
解密此命令,发现文件looter.so
答案:NSSCTF{looter.so}
析6:黑客在服务器上修改了一个配置文件,文件的绝对路径为__。
在第25个TCP流中,
在第26个TCP流中,将结果输入到/etc/pam.d/common-auth
在第27个TCP流中,查看执行结果
答案:NSSCTF{/etc/pam.d/common-auth}
3. webshell
题目描述:
单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:
- 黑客登录系统使用的密码是_____________。。得到的flag请使用NSSCTF{}格式提交。
- 黑客修改了一个日志文件,文件的绝对路径为_____________。(请确认绝对路径后再提交)。得到的flag请使用NSSCTF{}格式提交。
- 黑客获取webshell之后,权限是______?得到的flag请使用NSSCTF{}格式提交。
- 黑客写入的webshell文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)。得到的flag请使用NSSCTF{}格式提交。
- 黑客上传的代理工具客户端名字是_____________。(如有字母请全部使用小写)。得到的flag请使用NSSCTF{}格式提交。
- 黑客代理工具的回连服务端IP是_____________。得到的flag请使用NSSCTF{}格式提交。
- 黑客的socks5的连接账号、密码是______。(中间使用#号隔开,例如admin#passwd)。得到的flag请使用NSSCTF{}格式提交。
析1:黑客登录系统使用的密码是__。
wireshark打开下载的附件hack.pcap
根据常见的登录关键词过滤http contains login
、http contains user
查看到输入的用户名和密码,追踪该用户是否成功登录,返回200
答案:NSSCTF{Admin123!@#}
析2:黑客修改了一个日志文件,文件的绝对路径为__。
根据Logs关键词查找http contains .log
追踪TCP流25:
得到日志文件的相对路径。可根据常见服务器根目录/var/www/html,拼接成绝对路径。
使用pwd关键词过滤http contains pwd
分析tcp流31:
发送pwd命令请求,成功回显200:
返回的信息中包含了根目录/var/www/html。
答案:NSSCTF{/var/www/html/data/Runtime/Logs/Home/21_08_07.log}
析3:黑客获取webshell之后,权限是__。
先试试关键词http contains whoami
追踪后面的那条HTTP流,发现执行whoami命令成功,回显中的用户为www-data
答案:NSSCTF{www-data}
析4:黑客写入的webshell文件名是__。
在第33个TCP流中,文件执行shell命令,并写入1.php文件
这个命令采用了base64编码,解码是:
答案:NSSCTF{1.php}
析5:黑客上传的代理工具客户端名字是__。
根据前面shell的连接密码aaa搜索http contains aaa
答案:NSSCTF{frpc}
析6:黑客代理工具的回连服务端IP是__。
迷茫了,在后面的tcp流里面翻了半天
前面连接的时候其实就应该有代理,真是傻了
将这个tcp流放到burpsuite里面解码,转换十六进制,修改类型为ASCII hex
答案:NSSCTF{192.168.239.123}
析7:黑客的socks5的连接账号、密码是__。(中间使用#号隔开)
在上面一题中,解码出来里面包含了socks5的账号信息
粘不出来,换个工具
答案:NSSCTF{0HDFt16cLQJ#JTN276Gp}
4. 日志分析
题目描述:
单位某应用程序被攻击,请分析日志,进行作答:
- 网络存在源码泄漏,源码文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)。得到的flag请使用NSSCTF{}格式提交。
- 分析攻击流量,黑客往/tmp目录写入一个文件,文件名为_____________。得到的flag请使用NSSCTF{}格式提交。
- 分析攻击流量,黑客使用的是______类读取了秘密文件。得到的flag请使用NSSCTF{}格式提交。
析1:网络存在源码泄漏,源码文件名是__。
先处理下载的附件access.log日志文件,将内容复制到表格中并对数据进行分列
对请求的URL内容进行转义:将%2e
替换为.
,将%2f
替换为/
,将%3f
替换为?
筛选请求成功的记录
答案:NSSCTF{www.zip}
小结
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。
字符 | 含义 | 十六进制值编码 |
---|---|---|
+ | URL 中 + 号表示空格 | %2B |
空格 | URL中的空格可以编码为 + 号或者 %20 | %20 |
/ | 分隔目录和子目录 | %2F |
? | 分隔实际的 URL 和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | URL 中指定的参数间的分隔符 | %26 |
= | URL 中指定参数的值 | %3D |
参考链接:https://blog.csdn.net/ccc369639963/article/details/123398268
析2:黑客往/tmp目录写入一个文件,文件名为___。
筛选请求中有/tmp目录的记录
转义URL
答案:NSSCTF{sess_car}
析3:黑客使用的是__类读取了秘密文件。
上一题后面是一串序列化字符,可尝试解读:
func:
files:Array
(
[filename] =>./files/filename
[call_user_func_array] => ./file/call_user_func_array
)
paths:Array
(
[/flag] => SplFileObject
)
答案:NSSCTF{SplFileObject}
小结:
序列化格式中的字母含义:
a - array
b - boolean
d - double
i - integer
o - common object
r - reference
s - string
C - custom object
O - class
N - null
R - pointer reference
U - unicode string
类方法并不会参与到实例化里面
需要注意的是变量受到不同修饰符(public,private,protected)修饰进行序列化时,序列化后变量的长度和名称会发生变化。
参考链接:https://blog.csdn.net/qq_31088019/article/details/126519989
5. 内存分析
网管小王制作了一个虚拟机文件,让您来分析后作答:
- 虚拟机的密码是_____________。(密码中为flag{xxxx},含有空格,提交时不要去掉)。得到的flag请使用NSSCTF{}格式提交。
- 虚拟机中有一个某品牌手机的备份文件,文件里的图片里的字符串为_____________。(解题过程中需要用到上一题答案中flag{}内的内容进行处理。本题的格式也是flag{xxx},含有空格,提交时不要去掉)。得到的flag请使用NSSCTF{}格式提交。
析1:虚拟机的密码
使用Volatility镜像解析工具:
vol.py -f 镜像文件 imageinfo #获取内存镜像的摘要信息,比如系统版本,硬件构架等
vol.py -f 镜像文件 --profile=操作系统 lsadump #从注册表中提取LSA密钥信息
vol.py --plugins=./volatility/plugins/ mimikatz -f 镜像文件 --profile=操作系统 #使用mimikatz插件获取Windows系统中泄露的凭据
-
探测镜像文件基本信息
vol.py -f /home/kali/桌面/0/Target.vmem imageinfo
最可能的操作系统是:Win7SP1x64 -
mimikatz探索凭证
vol.py --plugins=./volatility/plugins/ mimikatz -f /home/kali/桌面/0/Target.vmem --profile=Win7SP1x64
答案:NSSCTF{W31C0M3 T0 THiS 34SY F0R3NSiCX}
析2:虚拟机中有一个某品牌手机的备份文件,文件里的图片里的字符串为__。
vol.py -f Target.vmem --profile=Win7SP1x64 filescan #扫描内存中的文件
vol.py -f Target.vmem --profile=Win7SP1x64 filescan | grep CTF #filescan结合grep命令来进行筛选
vol.py -f Target.vmem --profile=Win7SP1x64 dumpfiles -Q 进程ID -D 放入的文件夹 #dumpfiles导出内存中缓存的文件
-
扫描文件,根据关键词CTF筛选,发现有关于HUAWEI的备份信息
vol.py -f /home/kali/桌面/0/Target.vmem --profile=Win7SP1x64 filescan | grep HUAWEI
-
提取第一个文件
mkdir /home/kali/桌面/0/1
vol.py -f /home/kali/桌面/0/Target.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d8c7d10 -D /home/kali/桌面/0/1
得到两个文件
里面存在一个 images0.tar.enc华为加密文件,先解压dat文件,然后尝试解密 -
解压备份文件
unzip file.None.0xfffffa80037e0af0.dat
-
解密华为备份文件:使用kobackupdec.py脚本
用户密码就是上一题的Flag,将里面的空格改成下划线:W31C0M3_T0_THiS_34SY_F0R3NSiCX
破解文件python3 kobackupdec.py -vvv "W31C0M3_T0_THiS_34SY_F0R3NSiCX" "/home/kali/桌面/0/1/HUAWEI P40_2021-aa-bb xx.yy.zz/" "/home/kali/桌面/0/2/"
答案:NSSCTF{TH4NK Y0U FOR DECRYPTING MY DATA}
小结
- Volatility工具:
-f 指定镜像文件
--profile 指定操作系统
imageinfo 获取内存镜像的摘要信息,比如系统版本,硬件构架等
lsadump 从注册表中提取LSA密钥信息
filescan 扫描内存中的文件
dumpfiles 导出内存中缓存的文件
vol.py --plugins=./volatility/plugins/ mimikatz -f 镜像文件 --profile=操作系统 #使用mimikatz插件获取Windows系统中泄露的凭据
vol.py -f Target.vmem --profile=Win7SP1x64 filescan | grep CTF #filescan结合grep命令来进行筛选
vol.py -f Target.vmem --profile=Win7SP1x64 dumpfiles -Q 进程ID -D 放入的文件夹 #dumpfiles导出内存中缓存的文件
- 解密华为备份文件kobackupdec:
kobackupdec.py [-h] [-v] password backup_path dest_path
- password, is the user provided password.
- backup_path, is the folder containing the Huawei backup, relative or absolute paths can be used.
- dest_path, is the folder to be created in the specified path, absolute or relative. It will complain if the provided folder already exists.
- [-v] (from -v to -vvv) verbosity level, written on stderr. It’s suggested to use -vvv with a redirect to get a log of the process.`
注意,指定解压路径时,必须是没有创建的文件夹,不然会报错。
6.简单日志分析
某应用程序被攻击,请分析日志后作答:
- 黑客攻击的参数是______。(如有字母请全部使用小写)。得到的flag请使用NSSCTF{}格式提交。
- 黑客查看的秘密文件的绝对路径是_____________。得到的flag请使用NSSCTF{}格式提交。
- 黑客反弹shell的ip和端口是_____________。(格式使用“ip:端口",例如127.0.0.1:2333)。得到的flag请使用NSSCTF{}格式提交。
析1:黑客攻击的参数是__。
将附件app.log日志信息放到表格里面,根据空格分列便于数据处理。
根据状态码,有三条数据请求的响应码为500,其他都是404
可知攻击的参数为 user
答案:NSSCTF{user}
析2:黑客查看的秘密文件的绝对路径是__。
base64解码:
答案:NSSCTF{/Th4s_IS_VERY_Import_Fi1e}
析3:黑客反弹shell的ip和端口是___。
base64解码时,出现了乱码的情况
重新细看,发现中间存在%2b
,将其转换为+
号,再解密
答案:NSSCTF{192.168.2.197:8888}
7.SQL注入
某应用程序被攻击,请分析日志后作答:
- 黑客在注入过程中采用的注入手法叫_____________。(格式为4个汉字,例如“拼搏努力”)。得到的flag请使用NSSCTF{}格式提交
- 黑客在注入过程中,最终获取flag的数据库名、表名和字段名是_____________。(格式为“数据库名#表名#字段名”,例如database#table#column)。得到的flag请使用NSSCTF{}格式提交。
- 黑客最后获取到的flag字符串为_____________。得到的flag请使用NSSCTF{}格式提交。
析1:黑客在注入过程中采用的注入手法叫__。
将附件access.log放到表格中:
将%20
替换为空格:
答案:NSSCTF{布尔盲注}
析2:最终获取flag的数据库名、表名和字段名是___。
方式一:直接查看最终爆破的请求,里面包含了前面判断出的数据库名、表名和列名:
方式二:根据步骤,按照响应长度判断最终成功的字符
数据库第一个字符为:s
数据库名:sqli
表名:flag
列名:flag
答案:NSSCTF{sqli#flag#flag}
析3:黑客最后获取到的flag字符串为__。
%7B
是URL编码中表示左花括号{
的字符。%7D
是URL编码中表示右花括号 }
的字符。
提取出爆破出的内容为:flag{deddcd67-bcfd-487e-b940-1217e668c7db}
答案:NSSCTF{deddcd67-bcfd-487e-b940-1217e668c7db}