APK-逆向2 Hack-you-2014

(看名以为是安卓逆向呢0.0,搞错了吧)

程序是.net写的,直接祭出神器dnSpy

 1 using System;
2 using System.Diagnostics;
3 using System.IO;
4 using System.Net.Sockets;
5 using System.Text;
6
7 namespace Rev_100
8 {
9 // Token: 0x02000002 RID: 2
10 internal class Program
11 {
12 // Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
13 private static void Main(string[] args)
14 {
15 string hostname = "127.0.0.1";
16 int port = 31337;
17 TcpClient tcpClient = new TcpClient();
18 try
19 {
20 Console.WriteLine("Connecting...");
21 tcpClient.Connect(hostname, port);
22 }
23 catch (Exception)
24 {
25 Console.WriteLine("Cannot connect!\nFail!");
26 return;
27 }
28 Socket client = tcpClient.Client;
29 string text = "Super Secret Key";
30 string text2 = Program.read();
31 client.Send(Encoding.ASCII.GetBytes("CTF{"));
32 foreach (char x in text)
33 {
34 client.Send(Encoding.ASCII.GetBytes(Program.search(x, text2)));
35 }
36 client.Send(Encoding.ASCII.GetBytes("}"));
37 client.Close();
38 tcpClient.Close();
39 Console.WriteLine("Success!");
40 }
41
42 // Token: 0x06000002 RID: 2 RVA: 0x0000213C File Offset: 0x0000033C
43 private static string read()
44 {
45 string fileName = Process.GetCurrentProcess().MainModule.FileName;
46 string[] array = fileName.Split(new char[]
47 {
48 '\\'
49 });
50 string path = array[array.Length - 1];
51 string result = "";
52 using (StreamReader streamReader = new StreamReader(path))
53 {
54 result = streamReader.ReadToEnd();
55 }
56 return result;
57 }
58
59 // Token: 0x06000003 RID: 3 RVA: 0x000021B0 File Offset: 0x000003B0
60 private static string search(char x, string text)
61 {
62 int length = text.Length;
63 for (int i = 0; i < length; i++)
64 {
65 if (x == text[i])
66 {
67 int value = i * 1337 % 256;
68 return Convert.ToString(value, 16).PadLeft(2, '0');
69 }
70 }
71 return "??";
72 }
73 }
74 }

直接相当于源码

最简单的方案就是用python开个服务:

1 import http.server
2
3 server_address = ('127.0.0.1', 31337)
4 handler_class = http.server.BaseHTTPRequestHandler
5 httpd = http.server.HTTPServer(server_address, handler_class)
6 httpd.serve_forever()

运行程序,直接得到flag

用python重写算法:

 1 text='Super Secret Key'
2 f=open(r'D:\Users\Desktop\攻防世界\re进阶\e669ad3bcd324237b73382a2bdc6e330.exe','r',encoding='unicode-escape')
3 text2=f.read()
4 f.close()
5 def serch(x,text):
6 length=len(text)
7 for i in range(length):
8 if x==text[i]:
9 v=i*1337%256
10 return '%02x' % (v)
11 y=''
12 for t in text:
13 y+=serch(t,text2)
14 print('CTF{'+y+'}')

CTF{7eb67b0bb4427e0b43b40b6042670b55}

攻防世界 reverse 进阶 APK-逆向2的更多相关文章

  1. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  2. 攻防世界 reverse 进阶 9-re1-100

    9.re1-100 1 if ( numRead ) 2 { 3 if ( childCheckDebugResult() ) 4 { 5 responseFalse(); 6 } 7 else if ...

  3. 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017

    8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...

  4. 攻防世界 reverse 进阶 notsequence

    notsequence  RCTF-2015 关键就是两个check函数 1 signed int __cdecl check1_80486CD(int a1[]) 2 { 3 signed int ...

  5. 攻防世界 reverse 进阶 easyre-153

    easyre-153 查壳: upx壳 脱壳: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 int ...

  6. 攻防世界 reverse 进阶 -gametime

    19.gametime csaw-ctf-2016-quals 这是一个小游戏,挺有意思的 's'-->' '    'x'-->'x'   'm'-->'m' 观察流程,发现检验函 ...

  7. 攻防世界 reverse 进阶 16-zorropub

    16.zorropub  nullcon-hackim-2016 (linux平台以后整理) https://github.com/ctfs/write-ups-2016/tree/master/nu ...

  8. 攻防世界 reverse 进阶 15-Reversing-x64Elf-100

    15.Reversing-x64Elf-100 这题非常简单, 1 signed __int64 __fastcall sub_4006FD(__int64 a1) 2 { 3 signed int ...

  9. 攻防世界 reverse 进阶 12 ReverseMe-120

    程序流程很清晰 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 unsigned int v3; // ...

随机推荐

  1. mitmproxy 代理工具介绍:rewrite和map local实现

    在接口测试中,会用到抓包工具或者代理工具,常用代理工具包括charles. burpsuite. fiddler.mitmproxy等,ssh -D参数 可实现socks5代理.网络嗅探工具可以使用t ...

  2. git branch & git remote branch

    git branch & git remote branch $ git branch -h usage: git branch [<options>] [-r | -a] [-- ...

  3. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

  4. webfullstack website

    webfullstack website refs https://www.lanqiao.cn/paths/ xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许 ...

  5. Fetch & Headers & CSRF

    Fetch & Headers & CSRF https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetc ...

  6. Build your own React

    Build your own React https://pomb.us/build-your-own-react/ https://github.com/pomber/didact demo htt ...

  7. 2021-2-20:请你说说分布式系统 BASE 理论是什么?

    BASE 理论是由 Dan Pritchett 在 ACM 上发表的一篇论文中提出的理论.是在 CAP 理论基础上提出的一种更实际的理论指导,和 PACELC 理论是有些相近的地方的. BASE 是指 ...

  8. 开源OA办公平台功能介绍:应用市场-固定资产管理(一)功能设计

    概述 应用市场-固定资产管理,是用来维护管理企业固定资产的一个功能.其整个功能包括对固定资产的台账信息.领用.调拨.借用.维修.盘点.报废等一整个生命周期的动态管理过程.力求客户安装就可以使用. 本应 ...

  9. Go 去找个对象吧

    前言 我的读者中应该大部分都是 Java 从业者,不知道写 Java 这些年是否真的有找到对象? 没找到也没关系,总不能在一棵树上吊死,我们也可以来 Go 这边看看,说不定会有新发现. 开个玩笑,本文 ...

  10. ElasticSearch 搜索模板与建议

    公号:码农充电站pro 主页:https://codeshellme.github.io Search APIs 用于搜索和聚合存储在 ES 中的数据. 1,搜索模板 Template Search ...