自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

serfend's blog

记录一下日常工作学习中遇到的坑~

  • 博客(45)
  • 收藏
  • 关注

原创 prokiller 刷题工具,快速简单自定义题库

problem-killer (简单易用的刷题工具)基于vue+element实现,所有数据存在浏览器端。不需要数据库,不需要服务器。在线体验开源地址:github.com/serfend/problem-killer体验DEMO地址:prokill.serfend.top视频演示地址:bilibili.com/video/BV16T4y1B7Fa使用方法方法一:直接运行下载最新发布的部署包,选中其中的server.zip文件下载解压下载好的zip文件双击运行ht

2022-05-15 18:48:31 5090 3

原创 CTF比赛PWN题sgtlibc通用快速解题框架

开源地址:https://github.com/serfend/sgtlibc使用 安装pwn解题框架例题:buuctf startsystem_bss_binsh_direct_x64shellcode_orw_x86例题:buuctf pwnable_orwlibc-leak_x86_puts例题:ctfshow ret2libc_64 内部赛_签到题libc-leak_x86_write_pure例题:buuctf jarvisoj_level1libc-leak_x86_writ

2022-07-07 22:29:43 1782 3

原创 CTF-PWN-[ZJCTF 2019]Login 栈位置的转换跟踪

来源:https://buuoj.cn/challenges内容:附件:链接:https://pan.baidu.com/s/1uBEYYeg9ouPDEOah-BHGQA?pwd=6si8 提取码:6si8答案:PWN题为动态flag使用安装pwn解题框架发现是cpp的题目,在password_checker的第9行下断点到判断密码的位置,随后输入用户名admin,密码cylic(300)用于测试溢出点和调用点题目是比较密码是否等于,正确则跳转进入 发现此处的值是aaaa,则我们将密码设置为 +cylic

2022-06-23 14:36:06 1479 3

原创 CTF逆向-[安洵杯 2019]game-使用deflat对主要混淆脱混淆后常规逻辑判断

CTF逆向-[安洵杯 2019]game-使用deflat对主要混淆脱混淆后常规逻辑判断来源:https://buuoj.cn/内容:无附件: https://pan.baidu.com/s/1qq_64SNIRnnTTCNqNIKOiw?pwd=1iz9 提取码:1iz9答案:KDEEIFGKIJ@AFGEJAEF@FDKADFGIJFA@FDE@JG@J总体思路判断和输入相关的函数,然后对这些函数使用deflat.py对程序扁平化处理。反向编写脚本得到答案详细步骤检查文件信息

2022-05-17 21:30:29 1580

原创 angr用法解析和常见用法实战

angr用法解析和常见用法实战文章目录angr用法解析和常见用法实战安装常见报错libgomp.so.1: version GOMP_4.0 not found, or other z3 issuesNo such file or directory: 'pyvex_c'AttributeError: 'FFI' object has no attribute 'unpack'angr has no attribute Project, or similarAttributeError: 'module'

2022-05-10 20:22:31 2386 1

原创 CTF逆向-[b01lers2020]little_engine-cpp基本函数用法和byte类型要点

CTF逆向-[b01lers2020]little_engine-cpp基本函数用法和byte类型要点来源:https://buuoj.cn/内容:附件:https://pan.baidu.com/s/1g6wnqkuqydzHHlXInmRCNQ?pwd=mjlu 提取码:mjlu答案:pctf{th3_m0d3rn_st34m_3ng1n3_w45_1nv3nt3d_1n_1698_buT_th3_b3st_0n3_in_1940}总体思路发现主要流程三个函数,分别是输出一个欢迎语、要求用

2022-05-08 22:34:16 1664

原创 Python使用struct库的用法

简介准确地讲,Python没有专门处理字节的数据类型。但由于b'str'可以表示字节,所以,字节数组=二进制str。而在C语言中,我们可以很方便地用struct、union来处理字节,以及字节和int,float的转换。故提供一个库来做转换。常用函数struct.pack(format:str, v1, v2, …)按format的格式打包v1、v2等参数import structresult = [1,2,3,4,5]print([struct.pack('<B', x) for

2022-05-08 22:31:00 838

原创 CTF逆向-[watevrCTF 2019]esreveR-看似复杂流程,发现核心逻辑,按64位架构导出栈中和寄存器中的值得到结果

CTF逆向-[watevrCTF 2019]esreveR-看似复杂流程,发现核心逻辑,按64位架构导出栈中和寄存器中的值得到结果来源:https://buuoj.cn/内容:附件:https://pan.baidu.com/s/1CL9SAiLOT6Y1aPuVq1tYOw?pwd=hsd5 提取码:hsd5答案:watevr{esrever_reversed_youtube.com/watch?v=I8ijb4Zee5E}总体思路用ida打开发现默认是按com加载,但该文件是elf文件,故

2022-05-07 14:35:26 2396

原创 Python 基于pycryptodome,实现对AES、DES、3DES、RSA等常用加密算法的使用,文末附各种加密的源码示例

Python 基于pycryptodome,实现对AES、DES、3DES、RSA等常用加密算法的使用,文末附各种加密的源码示例文章目录Python 基于pycryptodome,实现对AES、DES、3DES、RSA等常用加密算法的使用,文末附各种加密的源码示例该库支持以下特性概述四种分组加密模式简介对称加密DES加密3DES加密AES加密blowfish加密非对称加密RSA加密整体测试示例代码产生密钥对加解密校验签名(判断数据是否是可靠的,没有被篡改的)注意事项其他文档相关逆向CTF题(中文名:加

2022-05-05 21:09:24 5392 1

原创 CTF逆向-[MRCTF2020]VirtualTree-恒成立的jz花指令去除及smc变换原执行流程在二叉树上的应用,通过逆向思维编写脚本以解决

CTF逆向-[MRCTF2020]VirtualTree-恒成立的jz花指令去除及smc变换原执行流程在二叉树上的应用,通过逆向思维编写脚本以解决来源:https://buuoj.cn/内容:附件: 链接:https://pan.baidu.com/s/1JuQqLSLskTFxOCbXZgUR8g?pwd=da2a 提取码:da2a答案:MRCTF{@_7r3e_f0r_fuNN!}总体思路发现有花指令,去除发现有smc,动调让其执行对处理流程中涉及到的函数编写逆向思维脚本反着算对二叉

2022-05-04 18:11:47 2830

原创 CTF逆向-[b01lers2020]chugga_chugga-go语言逆向反编译后发现条件判断,使用z3约束求解

CTF逆向-[b01lers2020]chugga_chugga-go语言逆向反编译后发现条件判断,使用z3约束求解来源:https://buuoj.cn/内容:附件:链接:https://pan.baidu.com/s/1IcjTPjpUQf_oLFiJil8X7Q?pwd=lnl8 提取码:lnl8答案:pctf{s4d_chugg4_n01zez}总体思路发现是go耐心地将约束一个一个加入到脚本中运行得到flag详细步骤查看文件内容使用ida7.7版本打开,发现

2022-05-04 09:35:01 2178

原创 CTF逆向-[FlareOn1]Shellolololol-栈上执行,多层smc的动调得到最终结果

CTF逆向-[FlareOn1]Shellolololol-栈上执行,多层smc的动调得到最终结果来源:https://buuoj.cn/内容:附件:链接:https://pan.baidu.com/s/1juLLGgd1MSKeADO1uvAlXA?pwd=t7id 提取码:t7id答案:such.5h311010101@flare-on.com总体思路进去以后发现分析失败了,原来是调用了call eax全程逐步跟进,需要跳出循环的地方在循环外面按F4跳过找到flag详细步骤得

2022-05-03 16:52:29 1791

原创 CTF逆向-[FlareOn1]Javascrap-web逆向中发现的php后门的逐步解析方式,得到后门的密码

CTF逆向-[FlareOn1]Javascrap-web逆向中发现的php后门的逐步解析方式,得到后门的密码来源:https://buuoj.cn/内容:附件:链接:https://pan.baidu.com/s/1N2bN_TueCtuqTkNlE3tKeA?pwd=hqxm 提取码:hqxm答案:a11.that.java5crap@flare-on.com总体思路文件夹名字是c2,猜测是后门,故发现html文件中存在异常include查看include的文件发现php代码解析代码发

2022-05-03 16:41:30 1955 2

原创 CTF逆向-[De1CTF2019]Re_Sign-简单脱壳和base64换表编码的深度算法跟踪

CTF逆向-[De1CTF2019]Re_Sign-简单脱壳和base64换表编码的深度算法跟踪来源:https://buuoj.cn/内容:附件: 链接:https://pan.baidu.com/s/1BXcr8EQfqs8fLHh2V874kg?pwd=acal 提取码:acal答案:de1ctf{E_L4nguag3_1s_K3KeK3_N4Ji4}总体思路发现upx老版本的壳,使用老版本upx去除发现输入的值会被编码, 找到编码的地方并猜测其编码方式发现是base64编码,发现编

2022-05-02 11:22:41 3031

原创 Python通过str.translate实现base64换表,优雅和高效的换表方式

import base64raw_table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'new_table = '0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm+/'dictionary = str.maketrans(new_table, raw_table) # 创建字符映射关系data = 'ABCabc123测试内容'

2022-05-02 09:57:01 2705

原创 CTF逆向-[SUCTF2019]hardcpp-使用优化过的deflat.py处理混淆的控制流并将cpp的lambda解析得到实际处理逻辑

CTF逆向-[SUCTF2019]hardcpp-使用优化过的deflat.py处理混淆的控制流并将cpp的lambda解析得到实际处理逻辑来源:https://buuoj.cn/内容:附件:链接:https://pan.baidu.com/s/17OePBZh7Mvv9neqnh-Sv2g?pwd=d6kg 提取码:d6kg答案:#flag{mY-CurR1ed_Fns}总体思路发现混淆的执行流,使用原版的处理不太成功,处理后少了很多信息使用优化版的进行处理得到混淆少得多的代码逐个点开l

2022-04-29 22:05:46 2396

原创 CTF逆向-Dig the way Interesting Pointer-通过栈溢出方式覆盖变量以达到修改执行流程的目的

CTF逆向-Dig the way Interesting Pointer-通过栈溢出方式覆盖变量以达到修改执行流程的目的来源:https://buuoj.cn/内容:dig the way(to get the key)!附件:链接:https://pan.baidu.com/s/1ohai-S1epbYp2O-hzH8CRQ?pwd=rhz5 提取码:rhz5答案:8cda1bdb68a72a392a3968a71bdb8cda总体思路发现流程正常执行的话无法获得flag尝试通过栈溢出的

2022-04-28 21:07:40 1639

原创 CTF逆向-[NPUCTF2020]Baby Obfuscation-逆向思维编写脚本以及函数含义的逻辑理解

CTF逆向-[NPUCTF2020]Baby Obfuscation-逆向思维编写脚本以及函数含义的逻辑理解来源:https://buuoj.cn/内容:附件: https://pan.baidu.com/s/1jjjo11izhnEUQaLx00993w?pwd=pxdj 提取码:pxdj答案:NPUCTF{0bfu5er}总体思路根据执行逻辑分析每个函数的含义逻辑思维简化题目的代码,将其理解成较为简短的句子逆向思维去编写脚本详细步骤查看文件内容打开以后发现主函数里

2022-04-27 17:43:38 868

原创 CTF逆向-[网鼎杯 2020 青龙组]bang-安卓脱壳逆向:frida-dexdump导出得到源码

CTF逆向-[网鼎杯 2020 青龙组]bang-安卓脱壳逆向:frida-dexdump导出得到源码来源:https://buuoj.cn/内容:附件: 链接:https://pan.baidu.com/s/1gZggDrrdrTe2b3r7X_MeLw?pwd=nksg 提取码:nksg答案:flag{borring_things}总体思路拖入模拟器,使用frida-dexdump脱壳,壳检测工具Python版常见逆向工具下载地址:CTF逆向-常用的逆向工具 提取码:pnbt详细步骤

2022-04-26 21:02:22 3663

原创 CTF逆向-[MRCTF2020]EasyCpp - C++类型的逆向通用操作方法

CTF逆向-[MRCTF2020]EasyCpp - C++类型的逆向通用操作方法来源:https://buuoj.cn/内容:附件:链接:https://pan.baidu.com/s/1wbB31ubefyD0B4cMSZxLyQ?pwd=2qmr 提取码:2qmr答案:flag{4367FB5F42C6E46B2AF79BF409FB84D3}总体思路打开发现是cpp的逆向正常f5查看伪代码以后逐个向下分析其逻辑发现主要加密和变换逻辑以后编写逆向逻辑的脚本注意审题是md5+大写此

2022-04-26 10:38:28 1462

原创 【源码讲解】VUE实现微信样式的多个用户快速选择和操作组件

文章目录实现了任意人数用户的grid布局和自定义选取,首先看效果源码解析组件源码和调用方式组件实现调用方式事件传递优化版本参考文档实现了任意人数用户的grid布局和自定义选取,首先看效果基本效果支持对选择的人员进行回调,当有人被选中的时候,弹出编辑按钮,并且emit编辑事件源码解析整体实现:基于vue-element2的基础组件实现,也可以替换为用户实际使用的ui框架人员头像组件通过检查用户传入的id,从api中获取对应的用户信息和头像,并显示到页面中。注意头像组件调用

2022-04-25 10:21:11 872

原创 animation和transition冲突问题-animation的fill-mode属性作用

发现当一个对象同时设置了animation和transition的时候,transition属性就失效了,:hover里的属性变化变得没有过渡问题内容.right-hover-panel { position: fixed; right: -18rem; width: 20rem; z-index: 1; transition: all ease 0.5s; &:hover { right: 0rem; }}解决方法将animatio.

2022-04-24 21:47:52 1389

原创 简单原理剖析-反射方式通过attribute实现字段的动态mapper匹配和赋值

问题当需要根据用户输入值给一个对象的属性赋值时候需要挨个写判断,显得不优雅例如如下的实例public class Person{ public int ScoreEnglish{get;set;} public int ScoreMath{get;set;} public int ScorePhysical{get;set;}}public enum ScoreType{ English, Math, Physical}public sta

2022-04-24 16:35:33 457

原创 CTF-PWN-buuctf-others_shellcode-系统int80调用的使用方法

CTF-PWN来源:https://buuoj.cn/challenges内容:附件:https://pan.baidu.com/s/1twNiCnqBL17_WuQr1NdGBQ?pwd=g9by 提取码:g9by答案:flag{d07d7b41-1672-4338-a72c-43e12c26c587}总体思路这题是一道32位系统调用的教学题[CTF pwn]傻傻分不清的execve、int80、syscall、system及shellcode详细步骤查看文件信息in

2022-04-24 08:35:54 1709

原创 Vue-Router给当前url添加参数时报错 Navigation Duplicated Avoided redundant navigation to current location

发现当动态修改当前页面的url中的query时会报错是因为新创建的路由不能使用老路由的对象,而应该重新创建一个对象,以解决问题报错内容新老路由发生重复,停止跳转解决方法// 首先获取当前urlconst q = this.$route && this.$route.query// 通过创建新的路由的方式来添加参数this.$router.push({ query: Object.assign({ filename: '' }, q) })原因查看Vue-R.

2022-04-23 22:20:46 2226

原创 CTF-PWN-buuctf-not_the_same_3dsctf_2016-ROP函数返回到指定位置和ROP-chain的典型使用

CTF-PWN来源:https://buuoj.cn/challenges内容:附件:链接:https://pan.baidu.com/s/1Wll80yDkRvz5XMW_xIZRNQ?pwd=uye9 提取码:uye9答案:flag{c264d02e-6de6-4164-82a6-bdcb6c8ba64f}总体思路发现题目存在溢出点,并且给了flag相关的函数但是此题是静态编译的,有很多其他不必要的函数,可以尝试直接使用ROP-chain方法get-shell详细步骤查看文件信

2022-04-20 22:00:37 1573 2

原创 两个非子父关系的元素之间事件传递,让网页游戏变得更加简单

碰到一个问题,当两个元素不是父子关系且元素的位置存在重叠的时候,那么上面的元素将会让下面元素的事件变得无法响应。此时可以通过注册函数事件,将A元素的事件传递给B元素事件基础传递方式<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <title></title> </head> <body onselectstart="r.

2022-04-20 15:22:11 1809

原创 CTF-PWN-buuctf-ciscn_2019_c_1-ret2libc的典型使用

CTF-PWN来源:https://buuoj.cn/challenges内容:附件:https://pan.baidu.com/s/1ENhfN3jAV0TAUKpEIeZ7zw?pwd=2n64 提取码:2n64答案:flag{e8165d23-782e-47fd-9c16-0a002b1f08bd}总体思路发现加密位置,判断其溢出点通过设置第一个字符为\0以让strlen返回0,从而避免payload被破坏构造执行,溢出获取puts的地址,从而得到libc版本再次溢出,执行获取sh

2022-04-15 19:22:26 2517

原创 Python程序判断文件是否被打开被占用

完整代码# -*- coding: utf-8 -*-# -*- version: python3.x -*-import zlibimport base64import osimport win32file as wdef is_open(filename): if not os.access(filename, os.F_OK): return False try: handle = w.CreateFile(filename, w.GEN

2022-04-14 22:52:16 4944 5

原创 CTF-PWN-buuctf-pwn1_sctf_2016-CPP的字符串替换

CTF-PWN来源:https://buuoj.cn/challenges内容:附件:https://pan.baidu.com/s/1bSrSQZYWkBIWCXP5Lsq7sg?pwd=mpgo 提取码:mpgo答案:flag{714a8f91-7e24-440c-8cc6-1f2d26adbcec}总体思路发现get_flag的位置发现输入会被替换,构造exp详细步骤查看文件信息查看题目发现是将用户输入的I替换为you,虽然输入的时候只允许输入32位,但是因为替换

2022-04-14 15:44:52 557

原创 CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用来源:https://buuoj.cn/内容:附件:https://pan.baidu.com/s/1FKkXN6JDI0QkGw-UE2crNA?pwd=grb0 提取码:grb0答案:Y0u_hav3_r3v3rs3_1t!总体思路发现是虚机模拟形成每个指令的逆向找到加密值位置(有可能不止一个位置,该题就给了一个误导的)找到命令执行的流程(也是不止一个)逆向编写反向加密得到f

2022-04-13 19:20:20 773

原创 CTF逆向-[SUCTF2018]babyre-WP-cpp简单迭代并按表输出值的爆破

CTF逆向-[SUCTF2018]babyre-WP-cpp简单迭代并按表输出值的爆破来源:https://buuoj.cn/内容:https://github.com/hebtuerror404/CTF_competition_warehouse_2018附件:链接:https://pan.baidu.com/s/1j-DBK5eELYR3c1L6hhB1qg?pwd=2kxh 提取码:2kxh答案:SUCTF{Flag_8i7244980f}总体思路去除反调试,动调发现没有逻辑分支,发现

2022-04-13 08:39:04 2190

原创 CTF逆向-[羊城杯 2020]Bytecode-WP-Python字节码反编译

CTF逆向-[羊城杯 2020]Bytecode-WP-Python字节码反编译来源:https://buuoj.cn/内容:无附件:https://pan.baidu.com/s/15XJLq9jFV_pOtPMzNXG9XA?pwd=tlwo 提取码:tlwo答案:GWHT{cfa2b87b3f746a8f0ac5c5963faeff73}总体思路反编译汇编成py源码检查源码逻辑发现是一个约束求解(解方程)使用z3输入条件得到flag详细步骤文件信息,打开发现是Python的

2022-04-12 21:10:25 3117

原创 Python的pyc字节码反编译反汇编相关知识

常用pyc转py的工具pycdc Decompyle++Decompyle++旨在将编译后的Python字节码转换回有效的、人类可读的Python源代码。虽然其他项目取得了不同程度的成功,但Decompyle++的独特之处在于,它寻求支持来自任何版本的Python的字节码。Decompyle++包含一个字节码反汇编器(pycda)和一个反编译器(pycdc)。该工具需要手动编译,使用kali编译以后的样本:https://pan.baidu.com/s/1tAzVPMzFmhWko915yguO

2022-04-12 16:23:34 9359 1

原创 CTF逆向-[watevrCTF 2019]Timeout-WP-远程调试和修改程序当前运行位置RIP

CTF逆向-[watevrCTF 2019]Timeout-WP-远程调试和修改程序当前运行位置RIP来源:https://buuoj.cn/内容:无附件:链接:https://pan.baidu.com/s/1c3l7Fu5xO-j9Wv9iyclJ-g?pwd=5g4a 提取码:5g4a答案:watevr{3ncrytion_is_overrated_youtube.com/watch?v=OPf0YbXqDm0}总体思路打开程序检查其流程发现异常方法动调运行该方法以得到flag详

2022-04-11 09:14:29 1067

原创 安防工具-acunetix-web网站漏洞扫描和发现工具-2022040版本的使用及防御方抓包情况

acunetix 20220401版本:AWVS14.7.220401065提取码:t3u7内含激活方法的pdf,以下内容由该版本软件产生安装方法'修改host文件C:\Windows\System32\drivers\etc //Windows /etc/hosts ///Linux /etc/hosts // MAC '在host文件中添加内容127.0.0.1 updates.acunetix.com 127.0.0.1 erp.acunetix.com '设置服务状态W.

2022-04-11 08:06:00 2497 3

原创 CTF逆向-[SCTF2019]creakme-WP-基于AES加密算法下的保护:反调试及except_handler和SMC

CTF逆向-[SCTF2019]creakme-WP-基于AES加密算法下的保护:反调试及except_handler和SMC来源:https://buuoj.cn/内容:无附件:链接:https://pan.baidu.com/s/16pQIqjmG2nUhGGDt8Iw-TQ?pwd=g965 提取码:g965答案:sctf{Ae3_C8c_I28_pKcs79ad4}总体思路简单反调试的patch_except_handler的知识点smc得到解密算法,得到题目的flag密文使用c

2022-04-10 08:12:48 1015

原创 CTF逆向-[FlareOn2]very_success-WP_rol循环位移加密

CTF逆向-[FlareOn2]very_success-WP_rol循环位移加密来源:https://buuoj.cn/内容:无附件:链接:https://pan.baidu.com/s/1CUciO9EYSKTbLpHn3lCyAw?pwd=q6wu 提取码:q6wu答案:flag{a_Little_b1t_harder_plez@flare-on.com}总体思路平衡栈解决sp-analyse fail 问题找到加密位置逆向其加密流程动调以找到密文和一些固定值,反向编写exp详细

2022-04-09 19:17:47 1338

原创 CTF逆向-[CISCN2018]2ex-WP_mips-32架构以及base64换表

CTF逆向-[CISCN2018]2ex-WP_mips-32架构以及base64换表来源:https://buuoj.cn/内容:无附件:https://pan.baidu.com/s/1coGRxCdGn95Ink8mDL9wcQ?pwd=o2f3 提取码:o2f3答案:flag{change53233}总体思路mips-32架构,尝试简单逛逛先,实在不行再用其他工具。发现了疑似base64的算法通过换表算法解决详细步骤检查文件信息[外链图片转存失败,源站可能有防盗链机制,

2022-03-25 17:23:21 4700

原创 CTF逆向-[SCTF2019]babyre-WP_简单去花指令和流程识别

CTF逆向-[SCTF2019]babyre-WP_简单去花指令和流程识别来源:https://buuoj.cn/内容:无附件:https://pan.baidu.com/s/1pWTpezTXnr_NN4lY9xWzag?pwd=m2zv 提取码:m2zv答案:flag{ddwwxxssxaxwwaasasyywwdd-c2N0Zl85MTAy(fl4g_is_s0_ug1y!)}总体思路发现汇编中出现有红色部分,则说明反汇编失败,通常是有花指令或者说SMC(程序自己修改自己的代码)。去除

2022-03-24 22:41:26 5038

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除