吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3050|回复: 14

[原创逆向图文] 北邮两道REVERSE网安杯题目解析

[复制链接]
李沉舟 发表于 2018-11-4 11:39 | 显示全部楼层 |阅读模式

BIN来自https://bbs.pediy.com/thread-225623.htm
感谢PEDIY的无名侠提供。
第3道题只能在WIN7以上运行,我的XP跑不了,有时间再来TRY一TRY。
题目的水平确实一般,不水也不难,属于入门稍次级。


第一题:
[Asm] 纯文本查看 复制代码
00401490   .  81EC 84000000 sub esp,0x84
00401496   .  56            push esi
00401497   .  8BF1          mov esi,ecx
00401499   .  57            push edi
0040149A   .  B9 18000000   mov ecx,0x18
0040149F   .  33C0          xor eax,eax
004014A1   .  8D7C24 29     lea edi,dword ptr ss:[esp+0x29]
004014A5   .  C64424 28 00  mov byte ptr ss:[esp+0x28],0x0
004014AA   .  B2 52         mov dl,0x52
004014AC   .  F3:AB         rep stos dword ptr es:[edi]
004014AE   .  66:AB         stos word ptr es:[edi]
004014B0   .  AA            stos byte ptr es:[edi]
004014B1   .  B0 43         mov al,0x43
004014B3   .  B1 01         mov cl,0x1
004014B5   .  884424 12     mov byte ptr ss:[esp+0x12],al
004014B9   .  884424 1A     mov byte ptr ss:[esp+0x1A],al
004014BD   .  884424 1D     mov byte ptr ss:[esp+0x1D],al
004014C1   .  8D4424 28     lea eax,dword ptr ss:[esp+0x28]
004014C5   .  885424 0F     mov byte ptr ss:[esp+0xF],dl
004014C9   .  885424 16     mov byte ptr ss:[esp+0x16],dl
004014CD   .  6A 64         push 0x64
004014CF   .  884C24 0F     mov byte ptr ss:[esp+0xF],cl
004014D3   .  B2 57         mov dl,0x57
004014D5   .  884C24 28     mov byte ptr ss:[esp+0x28],cl
004014D9   .  884C24 29     mov byte ptr ss:[esp+0x29],cl
004014DD   .  884C24 2A     mov byte ptr ss:[esp+0x2A],cl
004014E1   .  50            push eax
004014E2   .  68 E8030000   push 0x3E8
004014E7   .  8BCE          mov ecx,esi
004014E9   .  C64424 18 77  mov byte ptr ss:[esp+0x18],0x77
004014EE   .  C64424 19 11  mov byte ptr ss:[esp+0x19],0x11
004014F3   .  C64424 1A 4D  mov byte ptr ss:[esp+0x1A],0x4D
004014F8   .  C64424 1C 6E  mov byte ptr ss:[esp+0x1C],0x6E
004014FD   .  C64424 1D 17  mov byte ptr ss:[esp+0x1D],0x17
00401502   .  C64424 1F 67  mov byte ptr ss:[esp+0x1F],0x67
00401507   .  C64424 20 12  mov byte ptr ss:[esp+0x20],0x12
0040150C   .  C64424 21 4D  mov byte ptr ss:[esp+0x21],0x4D
00401511   .  C64424 23 61  mov byte ptr ss:[esp+0x23],0x61
00401516   .  C64424 24 50  mov byte ptr ss:[esp+0x24],0x50
0040151B   .  C64424 25 45  mov byte ptr ss:[esp+0x25],0x45
00401520   .  C64424 27 49  mov byte ptr ss:[esp+0x27],0x49
00401525   .  885424 28     mov byte ptr ss:[esp+0x28],dl
00401529   .  C64424 2A 77  mov byte ptr ss:[esp+0x2A],0x77
0040152E   .  C64424 2B 53  mov byte ptr ss:[esp+0x2B],0x53
00401533   .  C64424 2C 65  mov byte ptr ss:[esp+0x2C],0x65
00401538   .  C64424 2D 41  mov byte ptr ss:[esp+0x2D],0x41
0040153D   .  885424 2E     mov byte ptr ss:[esp+0x2E],dl
00401541   .  C64424 2F 79  mov byte ptr ss:[esp+0x2F],0x79
00401546   .  C64424 33 00  mov byte ptr ss:[esp+0x33],0x0
0040154B   .  E8 EE020000   call <jmp.&MFC42.#CWnd::GetDlgItemTextA_>;  取输入
00401550   .  83F8 23       cmp eax,0x23                             ;  长度需要在10 - 35位之间
00401553   .  77 05         ja short re1.0040155A
00401555   .  83F8 0A       cmp eax,0xA
00401558   .  73 13         jnb short re1.0040156D
0040155A   >  6A 00         push 0x0
0040155C   .  68 94304000   push re1.00403094                        ;  ASCII "hint"
00401561   .  68 64304000   push re1.00403064                        ;  ASCII "The length of string is too long or too small!"
00401566   .  8BCE          mov ecx,esi
00401568   .  E8 CB020000   call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
0040156D   >  807C24 28 42  cmp byte ptr ss:[esp+0x28],0x42          ;  'B'
00401572   .  0F85 90000000 jnz re1.00401608
00401578   .  807C24 29 55  cmp byte ptr ss:[esp+0x29],0x55          ;  'U'
0040157D   .  0F85 85000000 jnz re1.00401608
00401583   .  807C24 2B 54  cmp byte ptr ss:[esp+0x2B],0x54          ;  'T'
00401588   .  75 7E         jnz short re1.00401608
0040158A   .  807C24 2A 50  cmp byte ptr ss:[esp+0x2A],0x50          ;  'P'
0040158F   .  75 77         jnz short re1.00401608
00401591   .  807C24 2C 7B  cmp byte ptr ss:[esp+0x2C],0x7B          ;  '{'
00401596   .  75 70         jnz short re1.00401608
00401598   .  807C24 48 7D  cmp byte ptr ss:[esp+0x48],0x7D
0040159D   .  75 69         jnz short re1.00401608                   ;  以上对注册码中的特定位进行检查
0040159F   .  B8 05000000   mov eax,0x5                              ;  从第5位开始取到第31位
004015A4   >  8A4C04 28     mov cl,byte ptr ss:[esp+eax+0x28]        ;  CL - 取1位
004015A8   .  FEC1          inc cl
004015AA   .  80F1 23       xor cl,0x23
004015AD   .  884C04 28     mov byte ptr ss:[esp+eax+0x28],cl
004015B1   .  40            inc eax
004015B2   .  83F8 20       cmp eax,0x20                             ;  保存
004015B5   .^ 7C ED         jl short re1.004015A4
004015B7   .  33C0          xor eax,eax
004015B9   >  8A5404 2D     mov dl,byte ptr ss:[esp+eax+0x2D]
004015BD   .  8A4C04 0C     mov cl,byte ptr ss:[esp+eax+0xC]         ;  循环比较数组
004015C1   .  3AD1          cmp dl,cl
004015C3   .  74 05         je short re1.004015CA
004015C5   .  C64424 0B 00  mov byte ptr ss:[esp+0xB],0x0
004015CA   >  40            inc eax
004015CB   .  8D48 05       lea ecx,dword ptr ds:[eax+0x5]
004015CE   .  83F9 20       cmp ecx,0x20
004015D1   .^ 7C E6         jl short re1.004015B9
004015D3   .  8A4424 0B     mov al,byte ptr ss:[esp+0xB]
004015D7   .  6A 00         push 0x0
004015D9   .  84C0          test al,al
004015DB   .  74 1A         je short re1.004015F7
004015DD   .  68 5C304000   push re1.0040305C                        ;  ASCII "Success"
004015E2   .  68 48304000   push re1.00403048                        ;  ASCII "Congratulations!"
004015E7   .  8BCE          mov ecx,esi
004015E9   .  E8 4A020000   call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
004015EE   .  5F            pop edi
004015EF   .  5E            pop esi
004015F0   .  81C4 84000000 add esp,0x84
004015F6   .  C3            retn
004015F7   >  68 40304000   push re1.00403040                        ;  ASCII "Fail"
004015FC   .  68 20304000   push re1.00403020                        ;  ASCII "I'm so Sorry,Please try again!"
00401601   .  8BCE          mov ecx,esi
00401603   .  E8 30020000   call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
00401608   >  5F            pop edi
00401609   .  5E            pop esi
0040160A   .  81C4 84000000 add esp,0x84
00401610   .  C3            retn

开头是先固定检验一下注册码的几位。
同时可以推算出,注册码的格式如下。
BUPT{27个字符}

Anyway,这道题目就是把每个字符的ASCII码递增,与0x23异或,最后把结果与一数组比较,等于则成功。
XOR密文如下:
77 11 4D 52 6E 17 43 67 12 4D 52 61 50 45 43 49 57 43 77 53 65 41 57 79 01 01 01
写段代码解出来即可。
[C] 纯文本查看 复制代码
int _tmain(int argc, _TCHAR* argv[])
{
	char flag[] = {0x77, 0x11, 0x4D, 0x52, 0x6E, 0x17, 0x43, 0x67, 0x12, 0x4D, 0x52,
		0x61, 0x50, 0x45, 0x43, 0x49, 0x57, 0x43, 0x77, 0x53, 0x65, 0x41, 0x57, 0x79, 0x01, 0x01, 0x01};

	char code[sizeof(flag) + 1] = {0};

	for (int i = 0; i < sizeof(flag); i++)
		code[i] = (flag[i] ^ 0x23) - 1;
	
	printf("%s", code);

	getchar();
	return 0;
}

最后输出S1mpL3_C0mpAre_is_SoEasY!!!
最终注册码为:BUPT{S1mpL3_C0mpAre_is_SoEasY!!!}
总结:
第一道题目偏易,而且这个注册码大小写的风格,有没有本世纪初的逆向组织的名称的风格?推测出题人也是个密界元老。

第二题:
这一题属于密码学问题,不过开头就说了,Let's do a simple problem。可以猜到,肯定是很常见的加密算法,不会给出什么需要高端数学知识的算法。
题目我没有仔细看,开始看它初始化了一个256大小的数组,我初步猜测是RC4算法。
Anyway,因为猜测是RC4算法,所以我找到了处理加密流程的函数,将题目中搜索到的一串疑似密文的HEX代入,发现可逆,直接解出最终答案。
BUPT{rc4_Cryptography_1sSOEa5y!-_-!!!}

如果是RC4算法的话,那么密文是。
7C553E5F0EB4CCB977BF6BD960E0B968FB11CED2154B0EB5F73E51EE514D5A9C01A0C53AD038

注意是HEX,要转化一下。
密钥是SimpleCryptography。

按我的思路巧解是,输入26个字符,

004010DF  |.  50            push eax
004010E0  |.  51            push ecx
004010E1  |.  E8 CA000000   call re2.004011B0


这里会压入输入的注册码,直接将其修改为密文,进去跟踪,得到注册码的HEX。

转化为字符串即可得到注册码。

评分

参与人数 10威望 +1 HB +31 THX +7 收起 理由
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
太阳神 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
消逝的过去 + 1
冷亦飞 + 1
weiran324 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
fourme2009 + 1
lies + 1
狐白小刺客 + 5 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
Shy + 1 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
Shark恒 + 1 + 20 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shy 发表于 2018-11-5 09:52 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
syzh802618 发表于 2018-11-5 15:32 | 显示全部楼层


腻害腻害,学到了
  感谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
狐白小刺客 发表于 2018-11-5 19:19 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
拿着雪糕 发表于 2022-2-10 22:00 | 显示全部楼层

学习大佬操作
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
军工强国 发表于 2022-2-14 01:20 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-5-5 02:40 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fourme2009 发表于 2022-5-5 09:21 | 显示全部楼层

太高深了。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
weiran324 发表于 2022-5-5 12:31 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
三月十六 发表于 2022-5-5 14:54 | 显示全部楼层


[快捷回复]-软件反汇编逆向分析,软件安全必不可少!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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