170611 逆向-gctf的debug的writeup
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相关推荐
- JavaScript逆向调试记 —— defcon threefactooorx writeup
defcon 29就这一道Web题目,说实话也没学到啥东西,唯一学到的就是勿钻牛角尖,及时调整策略. 此题严格来说算一道逆向题,只不过逆向的目标是混淆过JavaScript,我方法就是硬逆,等过几天看 ...
- 【WhaleCTF逆向题】Warmup题目writeup
题目信息: IDA直接载入 双击_main 图形视图直接向下拉一点就可以看到关键 直接F5看伪代码就可以 更关键的地方就是从46行开始 我是直接将一些不好看的标识符给改了 整个程序其实 ...
- 社团的CTF逆向题WriteUp
最近社团弄了CTF比赛,然后我就帮忙写了逆向的题目,这里写一下WriteUp,题目和源码在附件中给出 一个简单的逆向:one_jmp_to_flag.exe 这题算是签到题,直接OD智能搜索就完事了, ...
- IgniteMe debug 寒假逆向生涯(2/100)
IgniteMe 声明 这是道超级简单的题目,就不重复啰嗦了,找到需要加密的关键代码后,直接一步到位. memset(&v4, 0xCCu, 0xF4u);if ( strlen(a1) &g ...
- 安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)
From:https://www.52pojie.cn/forum.php?mod=viewthread&tid=742250 jeb 动态调试 smali 代码:https://www.bi ...
- java 广告sdk开发_supersonicads广告sdk逆向分析以及无源码debug java
0x00 背景 最近看到一个小游戏,但是它使用了supersonicads的sdk,广告极其多,非常烦,所以我就逆向了一下它,顺便分析了一下supersonicads的工作原理. 0x01 super ...
- 安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)...
From:https://www.52pojie.cn/forum.php?mod=viewthread&tid=742250 jeb 动态调试 smali 代码:https://www.bi ...
- 【UNCTF】逆向WriteUp以及出题笔记
[UNCTF]逆向WriteUp以及出题笔记 WriteUp re_checkin 反编译 babypy easyMaze ICU ezRust base_on_rust Trap ezre ezvm ...
- 西普学院逆向writeup ---------你会吗??
西普学院逆向writeup ---------你会吗?? --------跳跳龙 明天我们学校就要ctf比赛,深夜前10几分钟正好解了一道逆向题,是西普学院的,昨天,在小强的提醒下,也解了一道,今天就 ...
最新文章
- OpenCV+python:读取图片
- Linux编程_Shell脚本练习题
- 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程
- 网络口协商_以太网端口协商解析
- java中多态_Java中多态的理解
- 【SQL】查询DateTime类型的某一年数据
- Mac下提示APP已损坏,打不开,请移至废纸篓
- 机器学习 美股_我如何使用机器学习来探索英美文学之间的差异
- red-hat Linux6-5的安装
- python实现水仙花数
- 学成在线 网页前端(源码DIV+CSS)
- ❤️制作人工智能QQ机器人,视频教程+源码❤️内容超级丰富,慢慢看!
- 近期14个“AI产品经理”职位JD推荐(覆盖北京、上海、深圳、成都、重庆、杭州)
- BZOJ 3717: [PA2014]Pakowanie 状压dp
- 通过银行卡前缀判断归属
- 重磅推荐:火爆全网的「合成大西瓜」源码来了
- 新品周刊 | 雀巢推出感CAFÉ鎏光咖啡;联合利华联合汉堡王推出真香植物基皇堡...
- QT中的Singal\slot机制
- 世博之旅 (1/2)
- Kahan's Summation Formula原理—它是如何处理大数吃小数的
热门文章
- 构建工具----gradle---可能遇到的问题----Could not reserve enough space for object heap
- 上海贝岭携手亚信安全治理勒索邮件 建设主动防护体系实现零感染率
- 服务器系统wlanapi,wlanapi.dll
- 中国大学MOOC课程信息之数据分析可视化一
- maven js css 压缩,使用wro4j和maven在编译期间压缩js和css文件(经典)
- java自动化测试语言高级之Java 9 新特性
- 第三章 UT单元测试——CPU与内存使用率限制
- 二维码设计不得不知的小技巧!
- 你知道CAD看图软件浩辰CAD看图王中的批注如何删除/保存吗?
- 云计算HCIP实验-vAG和ITA搭建(VMware)