BUUCTF-菜刀流量-MISC-学习笔记

)

一、文件头分析

先看文件头:

text 复制代码
0a 0d 0d 0a c0 00 00 00 4d 3c 2b 1a ...
  • 0a 0d 0d 0a 是 pcapng 的块类型(Section Header Block);
  • 后面的 4d 3c 2b 1a(即 0x1A2B3C4D)是 pcapng 的字节序魔数。

所以这是一个标准抓包文件,用 Wireshark 。

二、流量分析

查找一下所有post请求的流量:

text 复制代码
http.request.method == "POST"

匹配到8条记录。

知识点:菜刀 / 蚁键 流量特征

  • 请求方法几乎都是 POST;
  • URL 固定指向一个上传目录里的小 .php 文件;
  • 参数名是 a、z0、z1、z2 之类,值是 base64;最常见的一句话结构是:
php 复制代码
a=@eval(base64_decode($_POST[action]));

追踪第一条http流,看到几个关键信息:

1、文件名 1569496537 是 Unix 时间戳

从 1970-01-01 00:00:00 UTC 起算的秒数, 等于 2019-09-26 11:15:37 UTC。

时间转换脚本:

python 复制代码
import datetime as d
	
	t1=d.datetime.fromtimestamp(1569496537, d.timezone.utc)    
	print(t1)                # 2019-09-26 11:15:37+00:00
	t2=d.datetime.fromtimestamp(1569496537, d.timezone(d.timedelta(hours=8)))  # 2019-09-26 19:15:37+08:00
	print(t2) 

或者用随波逐流工具箱

2、 逐条解码发现藏有压缩包

每条命令都追踪HTTP流后得出:

顺序 帧号 攻击者命令(z2 解码后) 回显要点
1 46 (菜刀首包,仅取系统信息) Linux 25c9dc316909 ... x86_64(www-data),站点根目录 /var/www/html/admin/upload
2 58 cd upload/;ls;... 1569496537.php、flag.rar、password.txt
3 69 cd upload/;ls -l;... flag.rar 434 B、password.txt 21 B、php 文件 28 B
4 96 cd upload/;cat flag.rar;... 返回 434 字节二进制(RAR 文件头 Rar!)
5 128 cd upload/;cat password.txt;... SuperHer0␡␡␡␡Masters␡(后面解释)
6 190 cd upload/;cd ..;... 跳到 /var/www/html/admin
7 252 cd "/var/www/html/admin/";ls;... footer.php、header.php、index.php、logout.php、upload、upload.php
8 442 ...;exit;... 无输出,攻击者退出

由表可知道,96帧返回了flag.rar

  1. 选中第 96 帧(请求)→ 右键 Follow → HTTP Stream;
  2. 弹窗左下角把显示方式从 ASCII 改成 Raw;
  3. 点 Save as... 保存成 flag.rar;

    压缩包打开要密码,

三、字符解密

解析128帧的响应,即133帧。

知识点: 怎么确认「128 的响应是 131」

HTTP 是同一 TCP 连接上的一问一答,Wireshark 会帮你配对:

  1. 看响应帧详情 :选中 128 帧,展开 Hypertext Transfer Protocol,里面有一行 [Response in frame: 128]------Wireshark 直接告诉你它回答的是谁;

  2. 看 TCP 流号 :128 和 131 的 tcp.stream 都是 8,过滤器 tcp.stream == 8 能把一问一答放在一起看;

点任意一个包,展开 Transmission Control Protocol(或 TCP 层)看到 Stream index: 8。

  1. Follow HTTP Stream:一个窗口同时显示请求和响应。

发现惊喜,有一串字符在下面:

1、八进制转字符

对比一下ASCii 码表

\177是八进制(Oct)的数字 (dec是十进制、hx是十六进制) , 代表删除键,先删了4次,又删了1次。

所以密码是:SuperMaster 。

解压压缩包拿到html代码。

2、HTML转字符

bash 复制代码
flag{306bd05d78ccb90d2a442539d70ce4c2}

python解码:

python 复制代码
import html
print(html.unescape("flag{306bd05d78ccb90d2a442539d70ce4c2}"))

拿到大结果。

如果怕粘错,读文件解析:

python 复制代码
import html
print(html.unescape(open("flag.txt").read()))
相关推荐
Godspeed Zhao10 小时前
从零开始学AI25——无监督学习之层次聚类
学习·机器学习·聚类
David猪大卫16 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger17 小时前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
星恒随风17 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
fengci.18 小时前
CTF2MISC中等部分
开发语言·前端·学习
YueTann19 小时前
mgtv5th-baseline学习
学习
蒸蒸yyyyzwd21 小时前
从后端面经学到的 3 个知识
笔记·学习
17岁的勇气21 小时前
Unity Shader unity文档学习笔记(二十二):shader变体
笔记·学习·unity
坤坤子吖1 天前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json