攻防世界|攻防世界 reverse 进阶 1-4
1.dmd-50 suctf-2016
文章图片
md5后比较,在线解md5得到:
文章图片
【攻防世界|攻防世界 reverse 进阶 1-4】
md5(md5($pass)),所以将grape再进行MD5
文章图片
b781cbb29054db12f88f08c6e161c199
2.Shuffle SECCON-CTF-2014
文章图片
硬编码:
SECCON{Welcome to the SECCON 2014 CTF!}
3.re2-cpp-is-awesome alexctf-2017
文章图片
文章图片
1 __int64 __fastcall main(int a1, char **a2, char **a3) 2 { 3char *v3; // rbx 4__int64 v4; // rax 5__int64 v5; // rdx 6__int64 v6; // rax 7__int64 v7; // rdx 8__int64 v8; // rdx 9__int64 char_1; // rdx 10__int64 s_char; // [rsp+10h] [rbp-60h] 11char v12; // [rsp+20h] [rbp-50h] 12char v13; // [rsp+4Fh] [rbp-21h] 13__int64 v14; // [rsp+50h] [rbp-20h] 14int k; // [rsp+5Ch] [rbp-14h] 15 16if ( a1 != 2 ) 17{ 18v3 = *a2; 19v4 = std::operator<>(&std::cout, "Usage: ", a3); 20v6 = std::operator< >(v4, v3, v5); 21std::operator< >(v6, " flag\n", v7); 22exit(0); 23} 24std::allocator ::allocator(&v13, a2, a3); 25std::__cxx11::basic_string ,std::allocator >::basic_string(&v12, a2[1], &v13); 26std::allocator ::~allocator(&v13); 27k = 0; 28for ( s_char = std::__cxx11::basic_string ,std::allocator >::begin(&v12); 29; 30sub_400D7A(&s_char) ) 31{ 32v14 = std::__cxx11::basic_string ,std::allocator >::end(&v12); 33if ( !cmp_400D3D((__int64)&s_char, (__int64)&v14) ) 34break; 35char_1 = *(unsigned __int8 *)sub_400D9A((__int64)&s_char); 36if ( (_BYTE)char_1 != str_6020A0[dword_6020C0[k]] )// 关键比较处 37error_400B56((__int64)&s_char, (__int64)&v14, char_1); // 输出失败 38++k; 39} 40success_400B73((__int64)&s_char, (__int64)&v14, v8); // 成功 41std::__cxx11::basic_string ,std::allocator >::~basic_string(&v12); 42return 0LL; 43 }
View Code 关键处,在一个字符串中取特定顺序的字符进行与输入比较
文章图片
文章图片
1 x='L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t' 2 x=list(x) 3 y=[ 36, 40, 55, 654, 7101, 87, 939, 1038, 1145, 121, 133, 140, 1513, 1686, 171, 183, 19101, 203, 2145, 2222, 232, 2421, 253, 26101, 270, 2841, 2968, 3068, 311, 3268, 3343] 34 t=[] 35 for i in range(len(y)): 36t.append(x[y[i]]) 37 38 print(''.join(t))
View Code ALEXCTF{W3_L0v3_C_W1th_CL45535}
4.crackme SHCTF-2017
查壳:
文章图片
脱壳:
esp脱壳法:
单步执行pushfd后,转到esp
文章图片
运行,断在一jmp处,单步来到一call,来到oep,在此处脱壳
文章图片
文章图片
脱壳成功,可以在ida中直接分析,这里我直接在od中跟一下程序,通过定位提示字符串,发现程序流程很简单,就是一个简单的异或
文章图片
脚本:
文章图片
文章图片
1 x=[18, 24, 38, 420, 536, 692, 774, 861, 986, 1010, 1116, 12103, 130, 1465, 150, 161, 1770, 1890, 1968, 2066, 21110, 2212, 2368, 24114, 2512, 2613, 2764, 2862, 2975, 3095, 312, 321, 3376, 3494, 3591, 3623, 37110, 3812, 3922, 40104, 4191, 4218] 43 s=list('this_is_not_flag') 44 t=[] 45 for i in range(42): 46t.append(chr(ord(s[i%16])^x[i])) 47 print(''.join(t))
View Code flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}
转载于:https://www.cnblogs.com/DirWang/p/11431895.html
推荐阅读
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 迷失的世界(二十七)
- 金庸们的武侠世界,陪你走过少年时代吗()
- 我的世界同人小说《暮色齿轮》第三回|我的世界同人小说《暮色齿轮》第三回 回忆
- 不以胜负论出关
- “成年人的世界,命都是钱给的”
- 归乡-序章(世界伊始,人类无所依靠,我的故事就从这里开始...)
- 4.23世界阅读日,樊登读书狂欢放送,听书中成长
- 诱惑的世界
- 世界之大,包罗万象--|世界之大,包罗万象-- 读《我不过低配的人生》