1625-5 王子昂 总结《2017年6月11日》 【连续第252天总结】

A.gctf reverse(1)

B.下载到debug.exe后拖入PEiD,发现是C#做的

刚好之前在实验吧的练习中学到了C#的逆向方法:使用ILSpy工具进行反编译

轻松得到源码,接下来就是分析即可

虽然函数名字都显示为乱码了,但是最终还是在一个类中找到了相关的函数

最外层函数:

// ᜅ
private static void (string[] A_0)
{
    string b = null;
    string value =string.Format("{0}", DateTime.Now.Hour +1);
    string a_ = "CreateByTenshine";
    ᜅ.(a_, Convert.ToInt32(value),ref b);
    string a = Console.ReadLine();
    if (a == b)
    {
        Console.WriteLine("u got it!");
        Console.ReadKey(true);
    }
    else
    {
        Console.Write("wrong");
    }
    Console.ReadKey(true);
}

可以看出,该程序将当前时间和一个字符串传入了一个函数进行处理,保存在临时变量b中,然后与输入字符串进行比较。因此只要跟到处理函数中,如法炮制即可得到flag

处理函数:

// ᜅ
private static void (string A_0, int A_1, refstring A_2)
{
    int num = 0;
    if (0 < A_0.Length)
    {
        do
        {
            char c = A_0[num];
            int num2 = 1;
            do
            {
                c = Convert.ToChar(ᜅ.(Convert.ToInt32(c), num2));
                num2++;
            }
            while (num2 < 15);
            A_2 += c;
            num++;
        }
        while (num < A_0.Length);
    }
    A_2 = ᜅ.(A_2);
}

在这个函数中,传入的时间参数A_1完全没有用到,看来是用来混淆的(也可能是每小时换一个flag太麻烦了吧

本函数中为对之前的字符串每个字符依次处理,先转换为INT类型然后在下一层函数中处理

将处理结果拼接起来,再最后处理一次

再内层的函数分别是一个由数组列表,两个数字参数一个用来作为索引,一个用来作为按位异或的操作数,结果返回的函数

和一个MD5处理的函数

大体算法就是这样,但由于没学过C#,不明白各个库函数的意思,还是有点麻烦的,百度了一番也没明白ToInt32和chr到底是按ASCII转换还是直接转换为对应内容的字符,用python照着写了一遍,结果却不对

请教了一下他人得知可以直接照抄到在线C#编译器中解决:

using System;
using System.Security.Cryptography;
using System.Text;
 
public class Test
{
public static void Main()
{
string b = null;
string value = string.Format("{0}", DateTime.Now.Hour + 1);
string a_ = "CreateByTenshine";
AAA(a_, Convert.ToInt32(value), ref b);
string a = Console.ReadLine();
    Console.WriteLine(b);
}

private static void AAA(string A_0, int A_1, ref string A_2)
    {
    int num = 0;
    if (0 < A_0.Length)
    {
    do
    {
    char c = A_0[num];
    int num2 = 1;
    do
    {
    c = Convert.ToChar(CCC(Convert.ToInt32(c), num2));
    num2++;
    }
    while (num2 < 15);
    A_2 += c;
    num++;
    }
    while (num < A_0.Length);
    }
Console.WriteLine(A_2);
    A_2 = BBB(A_2);
    }
    
        private static string BBB(string A_0)
    {
    byte[] bytes = Encoding.ASCII.GetBytes(A_0);
    return "flag{" + BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(bytes)).Replace("-", "") + "}";
    }

private static int CCC(int A_0, int A_1)

{

return (new int[]

{

2,

3,

5,

7,

11,

13,

17,

19,

23,

29,

31,

37,

41,

43,

47,

53,

59,

61,

67,

71,

73,

79,

83,

89,

97,

101,

103,

107,

109,

113

})[A_1] ^ A_0;

}

}

即可得到输出:

字符串为:[j}yl}ZaL}vkpqv}
MD5加密再拼接后的flag:flag{967DDDFBCD32C1F53527C221D9E40A0B}

验证后正确

明天后天再研究下第二个rev的题目,hackme格式,记事本打开后发现了ELF头,简单查了一下是LINUX的可执行文件格式

C.明日计划

计算思维/.NET理论

170611 逆向-gctf的debug的writeup相关推荐

  1. JavaScript逆向调试记 —— defcon threefactooorx writeup

    defcon 29就这一道Web题目,说实话也没学到啥东西,唯一学到的就是勿钻牛角尖,及时调整策略. 此题严格来说算一道逆向题,只不过逆向的目标是混淆过JavaScript,我方法就是硬逆,等过几天看 ...

  2. 【WhaleCTF逆向题】Warmup题目writeup

    题目信息: IDA直接载入   双击_main    图形视图直接向下拉一点就可以看到关键 直接F5看伪代码就可以 更关键的地方就是从46行开始    我是直接将一些不好看的标识符给改了 整个程序其实 ...

  3. 社团的CTF逆向题WriteUp

    最近社团弄了CTF比赛,然后我就帮忙写了逆向的题目,这里写一下WriteUp,题目和源码在附件中给出 一个简单的逆向:one_jmp_to_flag.exe 这题算是签到题,直接OD智能搜索就完事了, ...

  4. IgniteMe debug 寒假逆向生涯(2/100)

    IgniteMe 声明 这是道超级简单的题目,就不重复啰嗦了,找到需要加密的关键代码后,直接一步到位. memset(&v4, 0xCCu, 0xF4u);if ( strlen(a1) &g ...

  5. 安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)

    From:https://www.52pojie.cn/forum.php?mod=viewthread&tid=742250 jeb 动态调试 smali 代码:https://www.bi ...

  6. java 广告sdk开发_supersonicads广告sdk逆向分析以及无源码debug java

    0x00 背景 最近看到一个小游戏,但是它使用了supersonicads的sdk,广告极其多,非常烦,所以我就逆向了一下它,顺便分析了一下supersonicads的工作原理. 0x01 super ...

  7. 安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)...

    From:https://www.52pojie.cn/forum.php?mod=viewthread&tid=742250 jeb 动态调试 smali 代码:https://www.bi ...

  8. 【UNCTF】逆向WriteUp以及出题笔记

    [UNCTF]逆向WriteUp以及出题笔记 WriteUp re_checkin 反编译 babypy easyMaze ICU ezRust base_on_rust Trap ezre ezvm ...

  9. 西普学院逆向writeup ---------你会吗??

    西普学院逆向writeup ---------你会吗?? --------跳跳龙 明天我们学校就要ctf比赛,深夜前10几分钟正好解了一道逆向题,是西普学院的,昨天,在小强的提醒下,也解了一道,今天就 ...

最新文章

  1. OpenCV+python:读取图片
  2. Linux编程_Shell脚本练习题
  3. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程
  4. 网络口协商_以太网端口协商解析
  5. java中多态_Java中多态的理解
  6. 【SQL】查询DateTime类型的某一年数据
  7. Mac下提示APP已损坏,打不开,请移至废纸篓
  8. 机器学习 美股_我如何使用机器学习来探索英美文学之间的差异
  9. red-hat Linux6-5的安装
  10. python实现水仙花数
  11. 学成在线 网页前端(源码DIV+CSS)
  12. ❤️制作人工智能QQ机器人,视频教程+源码❤️内容超级丰富,慢慢看!
  13. 近期14个“AI产品经理”职位JD推荐(覆盖北京、上海、深圳、成都、重庆、杭州)
  14. BZOJ 3717: [PA2014]Pakowanie 状压dp
  15. 通过银行卡前缀判断归属
  16. 重磅推荐:火爆全网的「合成大西瓜」源码来了
  17. 新品周刊 | 雀巢推出感CAFÉ鎏光咖啡;联合利华联合汉堡王推出真香植物基皇堡...
  18. QT中的Singal\slot机制
  19. 世博之旅 (1/2)
  20. Kahan's Summation Formula原理—它是如何处理大数吃小数的

热门文章

  1. 构建工具----gradle---可能遇到的问题----Could not reserve enough space for object heap
  2. 上海贝岭携手亚信安全治理勒索邮件 建设主动防护体系实现零感染率
  3. 服务器系统wlanapi,wlanapi.dll
  4. 中国大学MOOC课程信息之数据分析可视化一
  5. maven js css 压缩,使用wro4j和maven在编译期间压缩js和css文件(经典)
  6. java自动化测试语言高级之Java 9 新特性
  7. 第三章 UT单元测试——CPU与内存使用率限制
  8. 二维码设计不得不知的小技巧!
  9. 你知道CAD看图软件浩辰CAD看图王中的批注如何删除/保存吗?
  10. 云计算HCIP实验-vAG和ITA搭建(VMware)