题目附件
链接:https://pan.baidu.com/s/1J20VusdMjit4coWAi5lnnQ
提取码:6emq
文章目录
- HW
- hard_web_1
- hard_web_2
- hard_web_3
- SS
- sevrer save_1
- sevrer save_2
- sevrer save_3
- sevrer save_4
- sevrer save_5
- sevrer save_6
- sevrer save_7
- sevrer save_8
- WS
- Wireshark1_1
- Wireshark1_2
- Wireshark1_3
- Wireshark1_4
- IR
- IncidentResponse_1
- IncidentResponse_2
- IncidentResponse_3
- IncidentResponse_4
- IncidentResponse_5
- IncidentResponse_6
- IncidentResponse_7
- SSW
- SmallSword_1
- SmallSword_2
- SmallSword_3
- EW
- ez_web_1
- ez_web_2
- ez_web_3
- BF
- baby_forensics_1
- baby_forensics_2
- baby_forensics_3
- TP
- tcpdump_1
- tcpdump_2
- tcpdump_3
- tcpdump_4
- tcpdump_5
- HD
- hacked_1
- hacked_2
- hacked_3
- hacked_4
HW
hard_web_1
这题其实可以参考这篇文章:从一道题分析Nmap SYN/半连接/半开放扫描流量
TCP扫描确认端口开放的标志就是返回SYN+ACK
的包,所以只需要过滤SYN、ACK
状态都为1
的包即可
tcp.flags.syn==1 and tcp.flags.ack==1
答案
80,888,8888
hard_web_2
过滤http
发现这里有个shell.jsp
右键追踪HTTP流,可以看到shell.jsp
的内容,哥斯拉AES加密的shell
PS:选择HTTP流是因为经过gzip解码的,如果是追踪TCP流还需要解码gzip
那么经过shell.jsp
的流量就是AES加密过的,密钥已知:748007e861908c03
选择原始数据,以0d0a0d0a
为请求体/响应体
和请求头/响应头
的界限
然后直接丢 CyberChef 梭哈
能解密流量了,就慢慢看过找flag即可,读取flag在tcp.stream eq 20053
flag{9236b29d-5488-41e6-a04b-53b0d8276542}
hard_web_3
webshell连接密码就是:748007e861908c03
cmd5撞一下即可得知是(不过这条收费):14mk3y
PS C:\Users\Administrator> php -r "var_dump(md5('14mk3y'));"
Command line code:1:
string(32) "748007e861908c03ba0830d5c47fd282"
SS
sevrer save_1
过滤http
,前面都是爆破的干扰流量,直接看到后面
从这个/helloworld/greeting
开始追踪TCP流,直接搜索引擎检索Payload关键字即可锁定CVE编号
CVE-2022-22965
sevrer save_2
继续追踪TCP流,在tcp.stream eq 106
,即可发现反弹shell的IP和端口
192.168.43.128:2333
sevrer save_3
/home/guests/
下发现一个main
文件,是ELF
可执行文件
main
sevrer save_4
生成的用户名和密码,直接查看/etc/passwd
以及/etc/shadow
新创建的用户名和密码:ll:123456
sevrer save_5
/home/guests/.log.txt
中有一个外网IP:172.105.202.239
sevrer save_6
从main
文件的修改时间来看,以及.idea
中两个看着很像挖矿程序的修改时间完全相同来猜测,lolMiner
、mine_doge.sh
是病毒运行后释放的文件
lolMiner,mine_doge.sh
sevrer save_7
打开mine_doge.sh
很明显,矿池地址:doge.millpools.cc:5567
sevrer save_8
钱包地址:DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9
WS
Wireshark1_1
就两个IP,很明显被TELNET登陆的IP是:192.168.246.28
Wireshark1_2
直接追踪TCP流即可发现口令为:youcannevergetthis
Wireshark1_3
Downloads
Wireshark1_4
mysql
IR
IncidentResponse_1
VMware打开irTest.ova
,中间有一些报错,问题不大,继续即可。查看一下root
用户最新更新过的记录文件: .bash_history
、.viminfo
.bash_history
看了有一些修改操作,但是看了看这些文件内容貌似也没发现挖矿痕迹
.viminfo
发现了大量修改redis
相关配置
查看redis.conf
,这里YOUR_WALLET_ADDRESS
就很可疑了
URL地址一查
那么挖矿程序应该就是redis
└─# echo -n '/etc/redis/redis-server'|md5sum|cut -d '' -f1
6f72038a870f05cbf923633066e48881
IncidentResponse_2
└─# echo -n 'donate.v2.xmrig.com'|md5sum|cut -d '' -f1
3fca20bb92d0ed67714e68704a0a4503
IncidentResponse_3
直接查看jar
包运行启动后的日志文件nohup.log
Shiro反序列化
echo -n 'shirodeserialization'|md5sum|cut -d '' -f1
3ee726cb32f87a15d22fe55fa04c4dcd
IncidentResponse_4
攻击者都植入挖矿程序了,肯定登陆过服务器,直接last
查看登录记录
也可以查看Nginx中的访问日志,tail /var/log/nginx/access.log
PS C:\Users\Administrator> php -r "var_dump(md5('81.70.166.3'));"
Command line code:1:
string(32) "c76b4b1a5e8c9e7751af4684c6a8b2c9"
IncidentResponse_5
就是最后访问时带的 UserAgent
PS C:\Users\Administrator> php -r "var_dump(md5('mozilla/5.0(compatible;baiduspider/2.0;+http://www.baidu.com/search/spider.html)'));"
Command line code:1:
string(32) "6ba8458f11f4044cce7a621c085bb3c6"
IncidentResponse_6
authorized_keys
不为空,推测攻击者开启了root
的SSH私钥登录
PS C:\Users\Administrator> php -r "var_dump(md5('/root/.ssh/authorized_keys'));"
Command line code:1:
string(32) "a1fa1b5aeb1f97340032971c342c4258"
IncidentResponse_7
/lib/systemd/system/redis.service
这个配置很可疑,一直在重启redis
,也是在不断维持植入的矿机程序
PS C:\Users\Administrator> php -r "var_dump(md5('/lib/systemd/system/redis.service'));"
Command line code:1:
string(32) "b2c5af8ce08753894540331e5a947d35"
SSW
SmallSword_1
直接过滤:tcp contains "$_POST"
6ea280898e404bfabd0ebb702327b18f
SmallSword_2
过滤http
,从最后往前看,因为前面大多是扫描流量,没啥关键的。蚁剑的base64传输,直接解码一条一条看即可
在tcp.stream eq 142
发现写入的内容
ad6269b7-3ce2-4ae8-b97f-f259515e7a91
SmallSword_3
tcp.stream eq 130
有一个exe
,很大
选择为原始数据
全部复制出来,去掉第一行的HTTP请求包的内容,另存为hexdata.txt
Python简单处理即可
with open('hexdata.txt', 'r') as f:
with open('1.exe', 'wb') as f1:
lines = f.readlines()
for line in lines:
line = line.strip()
f1.write(bytes.fromhex(line))
将HTTP响应包的头以及多余数据去掉,保存
是一个Python打包的exe文件,运行得到一个test.jpg
查看文件头,是一个PNG
图片,修改后缀为.PNG
,打开后CRC校验报错,推测修改了图片高度
修改高度即可
flag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}
EW
ez_web_1
一开始以为是这个d00r.php
,试了发现不对
然后在检索d00r.php
时发现了一个名为ViewMore.php
的文件
右键追踪TCP流发现是ViewMore.php
写入的d00r.php
所以答案为:ViewMore.php
ez_web_2
追踪TCP流发现执行了ifconfig
,响应内容格式是Gzip,问题不大
对当前流选择右键,追踪HTTP就可以看到明文了
192.168.101.132
ez_web_3
还是这个流:tcp.stream eq 100098
这里写入了一个k3y_file
是一个压缩包,直接转化
from base64 import *
base64_data = 'UEsDBBQAAQAAANgDvlTRoSUSMAAAACQAAAAHAAAAa2V5LnR4dGYJZVtgRzdJtOnW1ycl/O/AJ0rmzwNXxqbCRUq2LQid0gO2yXaPBcc9baLIAwnQ71BLAQI/ABQAAQAAANgDvlTRoSUSMAAAACQAAAAHACQAAAAAAAAAIAAAAAAAAABrZXkudHh0CgAgAAAAAAABABgAOg7Zcnlz2AE6DtlyeXPYAfldXhh5c9gBUEsFBgAAAAABAAEAWQAAAFUAAAAAAA=='
with open('k3y_file.zip', 'wb') as f:
f.write(b64decode(base64_data))
有密码,往回找找线索,还是这个流,找到疑似密码:7e03864b0db7e6f9
解压得到答案:7d9ddff2-2d67-4eba-9e48-b91c26c42337
BF
baby_forensics_1
给了两个文件,一个磁盘镜像,另一个猜测是内存镜像,DiskGenius
打开.vmdk
发现是BitLocker加密的磁盘,但是给了内存镜像,直接尝试EFDD
提取恢复密钥,先使用ArsenalImageMounter
将BitLocker加密磁盘挂载起来
然后EFDD操作如下:
成功获取恢复密钥
560604-255013-655633-128854-663223-316063-484946-476498
输入恢复密钥
打开得到key.txt
最扯的来了,虽然知道后觉得确实有点像rot47
,但是还是觉得很脑洞。。。。
the key is 2e80307085fd2b5c49c968c323ee25d5
或者R-studio
直接梭哈
baby_forensics_2
直接将calc.exe
的内存映射导出来
然后将2844.dmp
修改后缀为GIMP可加载的.data
格式,使用GIMP打开,然后就是不断地调整位移、宽度。先不断调整位移使之有图像的阴影等,然后宽度适当即可,如下:
或者使用这是 Volatility 3 工具的插件命令windows
,用于执行与 Windows 相关的分析。通过运行此命令,您将获取有关内存转储中运行的 Windows 进程、模块、文件和注册表等信息
然后在其中寻找calc.exe
和PID,找到这个Windows Handler
的句柄名
7598632541
baby_forensics_3
pslist
之前一眼便签,肯定有东西,参考我之前的文章:西湖论剑2021中国杭州网络安全技能大赛部分Writeup
直接寻找.snt
结尾的文件,导出
替换便签原来的存储位置,然后打开便签,得到密文
U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp94qfIcjQhDxPgr9G4u++pA==
密钥找了好久,用R-Studio
翻,最后在C:/Users/admin/Music
下找到个i4ak3y
PS:
R-Studio
是个神器,好好利用
直接尝试AES解密
TP
tcpdump_1
当爆破登录失败返回如下:
当请求正确,返回如下:
根据返回特征,直接尝试检索:tcp contains "{\"errCode\":200}"
TMjpxFGQwD:123457
tcpdump_2
PS C:\Users\Administrator> php -r "var_dump(md5('accessToken=f412d3a0378d42439ee016b06ef3330c; zyplayertoken=f412d3a0378d42439ee016b06ef3330cQzw=; userid=1'));"
Command line code:1:
string(32) "383c74db4e32513daaa1eeb1726d7255"
tcpdump_3
直接过滤关键字:tcp contains "jdbc" and tcp contains "username" and tcp contains "password"
zyplayer:1234567
tcpdump_4
直接检索jdbc
的payload:tcp contains "jdbc:"
EXP应该是这个:custom.dtd.xml
CVE编号直接将利用的包名和关键字贴上搜索引擎找就行
CVE-2022-21724:custom.dtd.xml
tcpdump_5
过滤http
,从后往前追踪TCP流即可发现
fscan
HD
hacked_1
登录有AES加密,密钥、iv
都已知
接下来只需要找登录成功的用户名和密码
直接AES解密
flag{WelC0m5_TO_H3re}
hacked_2
直接关键字检索:tcp contains "SECRET"
ssti_flask_hsfvaldb
hacked_3
有SECRET_KEY
,直接解密JWT即可,找到执行命令的包
请求包:
PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdx1EKwyAMANCrDEGiPz1Ar1KGZBi7gBpplH2Idy_d-3vTDKWrYiGzm2k5vZRUWeo2WsRObkLKeMKeuekoB4RwZvlg1hDg_S917lSeOhAFf0CTRvXp7ytYGPx2EUbnl7drWqqRk11m3cGmKw0.YpIQcw.J5vs8t8bAr0xDIxF6EqUAH2kkLE"
{'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}
返回包:
PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdylsKAyEMQNGtFEGiUGYBs5VpkRQz04AvjNIPce-t_TyXO9QZ8FK7quQfSd1VF6oJI_3S0HzehEQ4p60Xj43MgPXDHrhIjwc4d4X8wiDOwfNPatwoLhrIAvaAkgulxc87Y2SwWyX0xk6r59CUPJ96qvkFHeUvmg.YpIQkg.65xf8l2g9fXAImkfyihId46KkY4"
{'flag': 'red\n', 'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}
答案:red
hacked_4
PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJx1jUsOgkAQBa-Cs2lJCEbdcQI9A0w6DdMaYjPgfAwJmbsLC1fq7r2kKrWo6NlZGlhValmiE7yNrkS8y9iSeMQaENvYS-jt-kDXwC8S0PtG0TSVZAxulovCezhcreEZigw-Q2hoDWUVXFhk3GXH0xnyRhULoONnZB-wCzP6QN0Dqt_9b1AXsMb_8F10jm3AjdApT0mlNx2uUsY.YpIRHQ.qS_PWmxt4i4cjHYBzDz-rUdTZns"
{'username': '{{url_for.__globals__[\'__builtins__\'][\'eval\']("app.add_url_rule(\'/Index\', \'Index\', lambda :\'Hello! 123\')",{\'_request_ctx_stack\':url_for.__globals__[\'_request_ctx_stack\'],\'app\':url_for.__globals__[\'current_app\']})}}'}
答案:Index