精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到

谋生 求职/招聘- 论坛接单- 资源出售

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

若快打码 快速★准确★稳定★便宜2018年好项目,每月多挣好多钱长期 包养全网交友粉大户┏ E3 E5 X58超强双路服务器 ┓找软件作者合作/收购引流软件██打码兔秒杀一切验证码██
若快打码 快速★准确★稳定★便宜2018年好项目,每月多挣好多钱长期 包养全网交友粉大户┃单进程单IP每个模拟器IP不同┃找软件作者合作/收购引流软件█打码兔答题 速度快 极稳定█
全国PPTP秒换IP 动态IP仅35元/月火眼答题-韩文日文-高质量答题长期 包养全网交友粉大户┗价格美丽。性能无敌 请咨询┛找软件作者合作/收购引流软件┏█收购一切流量Q:503830000█┓
云速打码全天50%分成★稳定★快速▇▇QQ方面最新软件▇▇长期 包养全网交友粉大户★滴滴答题★8元万码★分成任加★找软件作者合作/收购引流软件Thewolf语音验证码接收平台可API
诺宾混拨动态vps/PPTP多地区换IP长期出QQ群QQ号微信精准粉网挣粉各种【活粉变现点这里】客服①大量租售各种qq小号 2892721932找软件作者合作/收购引流软件██ 日出大量网赚粉/交友粉 ██
┏ 集团收量,高价无限收一切量 ┓╔ 收粉丶卖粉丶大型①群 ╗各种【活粉变现点这里】客服①高价收购任何微信QQ粉找软件作者合作/收购引流软件大量收QQ活粉交友粉
┃ 收量:短视频引流,直播平台粉┃ 收粉丶卖粉丶大型①群各种【活粉变现点这里】客服②高价收购任何微信QQ粉找软件作者合作/收购引流软件大量收QQ活粉交友粉
┃ 收量:各大招聘网站一手简历 ┃收粉丶卖粉丶大型①群各种【活粉变现点这里】客服②高价收购任何微信QQ粉找软件作者合作/收购引流软件大量收QQ活粉交友粉
┃ 收量:短信、邮箱qun发通道 ┃收粉丶卖粉丶大型①群各种【活粉变现点这里】客服③高价收购任何微信QQ粉实力团队大量收粉入群找管理大量收QQ活粉交友粉
┗ 收粉:网赚粉/精准粉,交友粉 ┛收粉丶卖粉丶大型①群各种【活粉变现点这里】客服③高价收购任何微信QQ粉实力团队大量收粉入群找管理大量收QQ活粉交友粉
┏公司实力高价 收 引流软件渠道┓收粉丶卖粉丶大型①群██大量收婚恋宝妈 快手 火山██★高薪诚聘SEO大牛 高价买任何量★实力团队大量收粉入群找管理 收快手火山抖音 小视频引流
┃公司实力高价 收 引流软件渠道┃收粉丶卖粉丶大型①群██ 稳定收交友粉,找我换钱 ██★高薪诚聘SEO大牛 高价买任何量★实力团队大量收粉入群找管理 收快手火山抖音 小视频引流
┃公司实力高价 收 引流软件渠道┃╚ 收粉丶卖粉丶大型①群 ╝██收婚恋粉宝妈粉,找我换钱██★高薪诚聘SEO大牛 高价买任何量★实力团队大量收粉入群找管理 收快手火山抖音 小视频引流
┃公司实力高价 收 引流软件渠道┃大量收精准粉██收快手火山虎牙,找我换钱██★高薪诚聘SEO大牛 高价买任何量★实力团队大量收粉入群找管理 收快手火山抖音 小视频引流
┃公司实力高价 收 引流软件渠道┃大量收精准粉██长期大量收粉量大量小都吃██★高薪诚聘SEO大牛 高价买任何量★实力团队大量收粉入群找管理 收快手火山抖音 小视频引流
┃公司实力收 qun 发 邮箱软件 ┃大量收精准粉██ 婚恋/抖音/宝妈/空间/快手█████大量全新令牌QQ███实力团队大量收粉入群找管理收网赚粉 / 精准粉 / 兼职粉
┃公司实力收 qun 发 邮箱软件 ┃大量收精准粉███有量有质量,找我换钱██████大量全新令牌QQ███实力团队大量收粉入群找管理收网赚粉 / 精准粉 / 兼职粉
┃公司实力收 qun 发 邮箱软件 ┃大量收精准粉███实力大型公司收媒体量███收抖音火山王者引流:1513888885实力团队大量收粉入群找管理收网赚粉 / 精准粉 / 兼职粉
┃公司实力收 qun 发 邮箱软件 ┃大量收精准粉███大量资金,来一手代理███收抖音火山王者引流:1513888885实力团队大量收粉入群找管理收网赚粉 / 精准粉 / 兼职粉
┃公司实力收 qun 发 邮箱软件 ┃大量收精准粉███有量就有钱,速度来撩███实力公司 招代理、技术 收线上资源实力团队大量收粉入群找管理收网赚粉 / 精准粉 / 兼职粉
┃公司最高价收 邮件qun发软件┃█长期大量收购各种活粉█┃  全网大量收  ┃实力公司 招代理、技术 收线上资源实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
┃公司最高价收 邮件qun发软件┃█ 长期收购各种引流软件 █┃ 各种App交友粉 ┃实力公司 招代理、技术 收线上资源实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
┃公司最高价收 邮件qun发软件┃大量微信寻合作 接各种扫码授权┃   网赚粉   ┃实力公司 招代理、技术 收线上资源实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
┃公司最高价收 邮件qun发软件┃▇大量批发高质量QQ处号9位10位▇┃   游戏粉   ┃实力公司 招代理、技术 收线上资源实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
┗公司最高价收 邮件qun发软件┛▇大量批发高质量QQ处号9位10位▇┃   婚恋粉   ┃
实力收扫码进群量
实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
量收微信扫码进群粉,实力粉商来撩收男粉微信扫码进群QQ1324888881 ┃  各种活人粉  ┃
你量真,我需求大
实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
量收微信扫码进群粉,实力粉商来撩大量收男粉扫码进群QQ1324888881 ┃   短视频粉  ┃
你不乱,我不断
实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
量收微信扫码进群粉,实力粉商来撩☆收微信公众号粉丝.日结┃ 全网最高单价收购 ┃一一一一一收qq老接口一一一一一实力团队大量收粉入群找管理█出精准粉/出精准粉/出精准粉█
出少量网赚粉+微信:qunfa000☆收微信公众号粉丝.日结寻求 媒体量合作 有资源的撩我一一一一一收qq老接口一一一一一寻引流高手合作/1万粉以下勿扰█出精准粉/出精准粉/出精准粉█
出少量网赚粉+微信:qunfa000出兼职,网赚,交友粉,扫码进群寻求 媒体量合作 有资源的撩我★长期收网赚粉★流量.引流软件★寻引流高手合作/1万粉以下勿扰█出精准粉/出精准粉/出精准粉█
●国内外动态socks5 可API控制●出精准粉,量大来谈寻求 媒体量合作 有资源的撩我提供聚合支付系统源码+售后寻引流高手合作/1万粉以下勿扰出兼职粉有实力的来
大量收微信男粉QQ249813919█全新处Q██活令牌Q██邮箱Q█寻求 媒体量合作 有资源的撩我█拨号VPS服务器4元/天免费测试█寻引流高手合作/1万粉以下勿扰出各种精准粉QQ:1955599983
出微信qq交友粉网赚粉精准粉兼职大量出探探交友粉联系Q1962626235寻求 媒体量合作 有资源的撩我寻渠道,收网盟量 Q:1561032994寻引流高手合作/1万粉以下勿扰█微博全新█4级白号█0.18/个█
出售/网赚粉兼职粉精准粉/质量第一██ 出微信女粉/可项目合作 ██大量出活令牌处号一个月号高价收网赚粉 / 兼职粉,平台不限寻引流高手合作/1万粉以下勿扰★高价收网赚兼职粉,引流软件★
大量出qq邮箱推广引流qq950092█IP精灵█最强大的动态IP加速器大量出活令牌处号一个月号q空间转发直发精准网赚粉:q771112寻引流高手合作/1万粉以下勿扰
 ██QQ小号1毛钱/太阳Q/各类QQ██
大量出网赚粉/各种粉/各类用户资源出高质量微信男粉QQ:644949998大量出活令牌处号一个月号出网赚粉兼职粉各种男女粉寻引流高手合作/1万粉以下勿扰我要租广告位
查看: 113|回复: 2
收起左侧

[分析交流] 钉钉CTF瞎分析一波~

[复制链接]

签到天数:16 天

结帖率:100% (3/3)
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 Breathless 于 2018-10-12 20:50 编辑

一、说明
钉钉CTF是一个网友昨晚给我的,比较简单,但是思路和AliCTF非常像,所以就放在一起了,一些坛友问工具怎么使用
其实很简单,在这也稍微加下使用说明,自己技术比较菜,全程靠猜~~~~~有什么不对的地方,还请各位师傅指点.

二、钉钉CTF
这一题比较简单,先打开app看下

随便输入

错了,但是有个welcome to flag blank!根据题目意思,尝试什么都不输入

什么??????居然就对了!!!!!
好了,开始看Ali的吧...............

算啦算啦,还是看看内部怎么实现的这么牛逼的功能的吧
  1. protected void onCreate(Bundle arg3) {
  2.         super.onCreate(arg3);
  3.         this.setContentView(2130968603);
  4.         this.text = this.findViewById(2131427416);
  5.         this.textView1 = this.findViewById(2131427418);
  6.         this.button = this.findViewById(2131427415);
  7.         this.button.setOnClickListener(new View$OnClickListener() {
  8.             public void onClick(View arg4) {
  9.                 MainActivity.this.c = new CheckClass();
  10.                 MainActivity.this.c.a(MainActivity.this.text.getText().toString());  //先获取输入的字符串
  11.                 if(MainActivity.this.c.check()) {  //关键点
  12.                     MainActivity.this.textView1.setText("flag is XMAN{" + MainActivity.this.text.getText().toString() + "}");   
  13.                 }
  14.                 else {
  15.                     MainActivity.this.textView1.setText("WORING!");
  16.                 }
  17.             }
  18.         });
  19.     }
复制代码

onCreate方法中,先看MainActivity.this.c.a
  1. public void a(String arg5) {
  2.         int v1 = 30;
  3.         this.A = new byte[v1];
  4.         this.B = arg5.getBytes();
  5.         int v0;
  6.         for(v0 = 0; v0 < arg5.length(); ++v0) {
  7.             this.A[v0] = this.B[v0];
  8.         }

  9.         this.B = new byte[v1];
  10.     }
复制代码

获取输入的字符串,再看MainActivity.this.c.check()
  1. public boolean check() {
  2.         boolean v9 = false;
  3.         int[] v0 = new int[]{40, 42, 65, 67, 68, 2, 64, 70, 96, 98, 181, 7, 10, 64, 23, 17, 37, 20, 45, 91, 74, 72, 135, 33, 57, 43, 87, 99, 147, 53};
  4.         byte[] v5 = new byte[]{52, 111, 102, 113, 52, 52, 98};
  5.         int v2 = 0;
  6.         int v4 = 0;
  7.         int v7 = 0;
  8.         int v1;
  9.         for(v1 = 0; v1 < v0.length; ++v1) {
  10.             int v8 = this.b(v0[v1]);
  11.             new String();
  12.             Log.d("now array:", String.valueOf(v8));
  13.             switch(v8) {
  14.                 case 0: {
  15.                     this.A[v7] = ((byte)(this.A[v7] ^ v7));
  16.                     break;
  17.                 }
  18.                 case 1: {
  19.                     if(this.A[v4] != 0) {
  20.                         ++v4;
  21.                     }
  22.                     else {
  23.                     }

  24.                     break;
  25.                 }
  26.                 case 2: {
  27.                     v5[v4] = ((byte)(v5[v4] ^ v4));
  28.                     ++v4;
  29.                     break;
  30.                 }
  31.                 case 3: {
  32.                     if(v5[v7] == this.A[v7]) {
  33.                         ++v7;
  34.                     }
  35.                     else {
  36.                     }

  37.                     break;
  38.                 }
  39.                 case 4: {
  40.                     if(v7 == v4) {
  41.                         v9 = true;
  42.                     }

  43.                     return v9;
  44.                 }
  45.                 case 5: {
  46.                     if(v4 != v5.length) {
  47.                         v1 = v0.length - 3;
  48.                     }
  49.                     else {
  50.                         v4 = 0;
  51.                     }

  52.                     break;
  53.                 }
  54.                 default: {
  55.                     ++v2;
  56.                     break;
  57.                 }
  58.             }
  59.         }

  60.         return v9;
  61.     }

  62. public int b(int arg4) {
  63.         int v0 = 181 & arg4;
  64.         return (v0 & 1) + ((v0 & 4) >> 2) + ((v0 & 16) >> 4) + ((v0 & 32) >> 5) + ((v0 & 128) >> 7);
  65.   }
复制代码

此函数为关键点,看着挺复杂的,只要返回为true即可
  1. case 4: {
  2.                     if(v7 == v4) {
  3.                         v9 = true;
  4.                     }
  5.                     return v9;
  6.                 }
复制代码

case 4里的判断执行,下面再接着分析v8 [mw_shl_code=java,true]int v8 = this.b(v0[v1]); [/mw_shl_code]
由于v0是固定的,所以v8也是固定的,那么switch语句就好分析了
  1. import java.security.InvalidKeyException;
  2. import java.security.NoSuchAlgorithmException;

  3. public class DCtf {
  4.          private static byte[] A;
  5.          private static byte[] B;
  6.         public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
  7.                 a("4");
  8.                 check();
  9.           }        
  10.         
  11.         public static void a(String arg5) {
  12.         int v1 = 30;
  13.         A = new byte[v1];
  14.         B = arg5.getBytes();
  15.         int v0;
  16.         for(v0 = 0; v0 < arg5.length(); ++v0) {
  17.             A[v0] = B[v0];
  18.         }

  19.         B = new byte[v1];
  20.     }

  21.     public static int b(int arg4) {
  22.         int v0 = 181 & arg4;
  23.         return (v0 & 1) + ((v0 & 4) >> 2) + ((v0 & 16) >> 4) + ((v0 & 32) >> 5) + ((v0 & 128) >> 7);
  24.     }

  25.     public static boolean check() {
  26.         boolean v9 = false;
  27.         int[] v0 = new int[]{40, 42, 65, 67, 68, 2, 64, 70, 96, 98, 181, 7, 10, 64, 23, 17, 37, 20, 45, 91, 74, 72, 135, 33, 57, 43, 87, 99, 147, 53};
  28.         byte[] v5 = new byte[]{52, 111, 102, 113, 52, 52, 98};
  29.         int v2 = 0;
  30.         int v4 = 0;
  31.         int v7 = 0;
  32.         int v1;
  33.         for(v1 = 0; v1 < v0.length; ++v1) {
  34.             int v8 = b(v0[v1]);
  35.             new String();
  36.             System.out.println("now array:" + String.valueOf(v8));
  37.             switch(v8) {
  38.                 case 0: {
  39.                     A[v7] = ((byte)(A[v7] ^ v7));
  40.                     break;
  41.                 }
  42.                 case 1: {
  43.                     if(A[v4] != 0) {
  44.                         ++v4;
  45.                     }
  46.                     else {
  47.                     }
  48.                     break;
  49.                 }
  50.                 case 2: {
  51.                     v5[v4] = ((byte)(v5[v4] ^ v4));
  52.                     ++v4;
  53.                     break;
  54.                 }
  55.                 case 3: {
  56.                     if(v5[v7] == A[v7]) {
  57.                             System.out.println("v5[v7] "+v5[v7]+"------A[v7] "+A[v7]+" "+v7);
  58.                         ++v7;
  59.                     }
  60.                     else {
  61.                     }
  62.                     break;
  63.                 }
  64.                 case 4: {
  65.                     if(v7 == v4) {
  66.                         v9 = true;
  67.                     }
  68.                     System.out.println("v7 "+v7+"------v4 "+v4);

  69.                     return v9;
  70.                 }
  71.                 case 5: {
  72.                     if(v4 != v5.length) {
  73.                         v1 = v0.length - 3;
  74.                     }
  75.                     else {
  76.                         v4 = 0;
  77.                     }

  78.                     break;
  79.                 }
  80.                 default: {
  81.                     ++v2;
  82.                     break;
  83.                 }
  84.                
  85.             }
  86.         }

  87.         return v9;
  88.     }
  89. }
复制代码

运行上面的代码,可以得到v8的值分别是
  1. now array:1
  2. now array:1
  3. now array:1
  4. now array:1
  5. now array:1
  6. now array:0
  7. now array:0
  8. now array:1
  9. now array:1
  10. now array:1
  11. now array:5
  12. now array:3
  13. now array:4
复制代码

最后执行的就是case 4,符合我们前面的分析,但是v7 == v4,能影响v7的只有case 3这个分支,看上面v8的值,知道下面的代码只执行了一次
  1. case 3: {
  2.                     if(v5[v7] == this.A[v7]) {
  3.                         ++v7;
  4.                     }
  5.                     else {
  6.                     }
  7.                     break;
  8.                 }
复制代码

所以要想v7 == v4,v7和v4只能为1或者0,0就是什么都不输入,++v7执行之后为1,执行之前v7为就为0,所以A[v7]=52,查找ascall码表结果为4

分析到这,你就认为完了?然后并没有结束、、、、
  1. case 5: {
  2.                                 if (v4 != v5.length) {
  3.                                         v1 = v0.length - 3;
  4.                                 } else {
  5.                                         v4 = 0;
  6.                                 }

  7.                                 break;
  8.                         }
复制代码

上面的分析的是v4 != v5.length结果,如果v4 = v5.length呢,继续往下分析吧,也就是输入的字符串为7位
  1. now array:1
  2. now array:1
  3. now array:1
  4. now array:1
  5. now array:1
  6. now array:0
  7. now array:0
  8. now array:1
  9. now array:1
  10. now array:1
  11. now array:5
  12. now array:2
  13. now array:0
  14. now array:0
  15. now array:3
  16. v5[v7] 52------A[v7] 52 v7 0
  17. now array:2
  18. now array:3
  19. now array:2
  20. now array:3
  21. now array:2
  22. now array:0
  23. now array:0
  24. now array:3
  25. now array:2
  26. now array:3
  27. now array:2
  28. now array:3
  29. now array:2
  30. now array:3
  31. now array:4
  32. v7 1------v4 7
复制代码

控制v7的的case只有一个
  1. case 3: {
  2.                                 if (v5[v7] == A[v7]) {
  3.                                         System.out.println("v5[v7] " + v5[v7] + "------A[v7] " + A[v7] + " v7 " + v7);
  4.                                         ++v7;
  5.                                 } else {
  6.                                 }
  7.                                 break;
  8.                         }
复制代码

根据上面的代码循环,可以慢慢倒推出来结果为4ndr01d,真是一波三折呀。。。

放下分析的代码
  1. import java.security.InvalidKeyException;
  2. import java.security.NoSuchAlgorithmException;

  3. public class ctf1 {
  4.         private static byte[] A;
  5.         private static byte[] B;

  6.         public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
  7.                 a("4ndr01d");
  8.                 check();
  9.         }

  10.         public static void a(String arg5) {
  11.                 int v1 = 30;
  12.                 A = new byte[v1];
  13.                 B = arg5.getBytes();
  14.                 int v0;
  15.                 for (v0 = 0; v0 < arg5.length(); ++v0) {
  16.                         A[v0] = B[v0];
  17.                 }

  18.                 B = new byte[v1];
  19.         }

  20.         public static int b(int arg4) {
  21.                 int v0 = 181 & arg4;
  22.                 return (v0 & 1) + ((v0 & 4) >> 2) + ((v0 & 16) >> 4) + ((v0 & 32) >> 5) + ((v0 & 128) >> 7);
  23.         }

  24.         public static boolean check() {
  25.                 boolean v9 = false;
  26.                 int[] v0 = new int[] { 40, 42, 65, 67, 68, 2, 64, 70, 96, 98, 181, 7, 10, 64, 23, 17, 37, 20, 45, 91, 74, 72,
  27.                                 135, 33, 57, 43, 87, 99, 147, 53 };
  28.                 byte[] v5 = new byte[] { 52, 111, 102, 113, 52, 52, 98 };
  29.                 int v2 = 0;
  30.                 int v4 = 0;
  31.                 int v7 = 0;
  32.                 int v1;
  33.                 for (v1 = 0; v1 < v0.length; ++v1) {
  34.                         int v8 = b(v0[v1]);
  35.                         new String();
  36.                         System.out.println("now array:" + String.valueOf(v8));
  37.                         switch (v8) {
  38.                         case 0: {
  39.                                 A[v7] = ((byte) (A[v7] ^ v7));
  40.                                 break;
  41.                         }
  42.                         case 1: {
  43.                                 if (A[v4] != 0) {
  44.                                         ++v4;
  45.                                 } else {
  46.                                 }
  47.                                 break;
  48.                         }
  49.                         case 2: {
  50.                                 v5[v4] = ((byte) (v5[v4] ^ v4));
  51.                                 ++v4;
  52.                                 break;
  53.                         }
  54.                         case 3: {
  55.                                 if (v5[v7] == A[v7]) {
  56.                                         System.out.println("v5[v7] " + v5[v7] + "------A[v7] " + A[v7] + " v7 " + v7);
  57.                                         ++v7;
  58.                                 } else {
  59.                                 }
  60.                                 break;
  61.                         }
  62.                         case 4: {
  63.                                 if (v7 == v4) {
  64.                                         v9 = true;
  65.                                 }
  66.                                 System.out.println("v7 " + v7 + "------v4 " + v4);
  67.                                 return v9;
  68.                         }
  69.                         case 5: {
  70.                                 if (v4 != v5.length) {
  71.                                         v1 = v0.length - 3;
  72.                                 } else {
  73.                                         v4 = 0;
  74.                                 }

  75.                                 break;
  76.                         }
  77.                         default: {
  78.                                 ++v2;
  79.                                 break;
  80.                         }

  81.                         }
  82.                 }

  83.                 return v9;
  84.         }
  85. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1好评 +1 精币 +2 收起 理由
aib + 1 + 2 新技能已get√

查看全部评分

您可以选择打赏方式支持楼主

签到天数: 12 天

结帖率:91% (10/11)
发表于 4 天前 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 16 天

结帖率:100% (6/6)
发表于 4 天前 | 显示全部楼层
没看懂的举个爪子表示我们存在过。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /1 下一条

快速回复 收藏帖子 返回列表 按钮

sitemap|易语言源码|易语言教程|易语言论坛|诚聘英才|易语言模块|手机版|联系我们|精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.2 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125

快速回复 返回顶部 返回列表