1.dmd-50 suctf-2016

md5后比较,在线解md5得到:

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 {
3 char *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]
11 char v12; // [rsp+20h] [rbp-50h]
12 char v13; // [rsp+4Fh] [rbp-21h]
13 __int64 v14; // [rsp+50h] [rbp-20h]
14 int k; // [rsp+5Ch] [rbp-14h]
15
16 if ( a1 != 2 )
17 {
18 v3 = *a2;
19 v4 = std::operator<<<std::char_traits<char>>(&std::cout, "Usage: ", a3);
20 v6 = std::operator<<<std::char_traits<char>>(v4, v3, v5);
21 std::operator<<<std::char_traits<char>>(v6, " flag\n", v7);
22 exit(0);
23 }
24 std::allocator<char>::allocator(&v13, a2, a3);
25 std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(&v12, a2[1], &v13);
26 std::allocator<char>::~allocator(&v13);
27 k = 0;
28 for ( s_char = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::begin(&v12);
29 ;
30 sub_400D7A(&s_char) )
31 {
32 v14 = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::end(&v12);
33 if ( !cmp_400D3D((__int64)&s_char, (__int64)&v14) )
34 break;
35 char_1 = *(unsigned __int8 *)sub_400D9A((__int64)&s_char);
36 if ( (_BYTE)char_1 != str_6020A0[dword_6020C0[k]] )// 关键比较处
37 error_400B56((__int64)&s_char, (__int64)&v14, char_1);// 输出失败
38 ++k;
39 }
40 success_400B73((__int64)&s_char, (__int64)&v14, v8);// 成功
41 std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&v12);
42 return 0LL;
43 }

关键处,在一个字符串中取特定顺序的字符进行与输入比较

 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,
4 0,
5 5,
6 54,
7 101,
8 7,
9 39,
10 38,
11 45,
12 1,
13 3,
14 0,
15 13,
16 86,
17 1,
18 3,
19 101,
20 3,
21 45,
22 22,
23 2,
24 21,
25 3,
26 101,
27 0,
28 41,
29 68,
30 68,
31 1,
32 68,
33 43]
34 t=[]
35 for i in range(len(y)):
36 t.append(x[y[i]])
37
38 print(''.join(t))

ALEXCTF{W3_L0v3_C_W1th_CL45535}


4.crackme SHCTF-2017

查壳:

脱壳:

esp脱壳法:

单步执行pushfd后,转到esp

运行,断在一jmp处,单步来到一call,来到oep,在此处脱壳

脱壳成功,可以在ida中直接分析,这里我直接在od中跟一下程序,通过定位提示字符串,发现程序流程很简单,就是一个简单的异或

脚本:

 1 x=[18,
2 4,
3 8,
4 20,
5 36,
6 92,
7 74,
8 61,
9 86,
10 10,
11 16,
12 103,
13 0,
14 65,
15 0,
16 1,
17 70,
18 90,
19 68,
20 66,
21 110,
22 12,
23 68,
24 114,
25 12,
26 13,
27 64,
28 62,
29 75,
30 95,
31 2,
32 1,
33 76,
34 94,
35 91,
36 23,
37 110,
38 12,
39 22,
40 104,
41 91,
42 18]
43 s=list('this_is_not_flag')
44 t=[]
45 for i in range(42):
46 t.append(chr(ord(s[i%16])^x[i]))
47 print(''.join(t))

flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}

攻防世界 reverse 进阶 1-4的更多相关文章

  1. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

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

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

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

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

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

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

  5. 攻防世界 reverse 进阶 notsequence

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

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

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

  7. 攻防世界 reverse 进阶 -gametime

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

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

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

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

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

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

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

随机推荐

  1. JavaScript 词法 All In One

    JavaScript 词法 All In One JavaScript 词法 这部分描述了JavaScript 的词法(lexical grammar). ECMAScript 源码文本会被从左到右扫 ...

  2. CSS3 弹性盒子(Flex Box)

    1 CSS3 弹性盒子(Flex Box) 1 http://caniuse.com/#search=flex%20box https://www.w3.org/TR/css-flexbox-1/ C ...

  3. Self-XSS All In One

    Self-XSS All In One Self-XSS(自跨站脚本)攻击 警告! 使用此控制台可能会给攻击者可乘之机,让其利用 Self-XSS(自跨站脚本)攻击来冒充您并窃取您的信息.请勿输入或粘 ...

  4. Express All In One

    Express All In One express.js, node.js web framework # v4.17.1 Latest, on May 26, 2019 $ yarn add ex ...

  5. Angular Routing

    Angular Routing v9.0.7 https://angular.io/start/start-routing

  6. API 注解 & Java API annotation

    API 注解 & Java API annotation 注解 annotation

  7. Github上优秀的.NET Core开源项目的集合

    内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:https://github.com/jasonhua95/ ...

  8. Vue和Element基础使用,综合案例学生列表实现

    知识点梳理 课堂讲义 1.Vue 快速入门 1.1.Vue的介绍 Vue是一套构建用户界面的渐进式前端框架. 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合. 通过尽可能简单的A ...

  9. Django框架admin后台管理和用户端静态文件

    目录 一.admin后台管理 1. 如何使用 2. 路由分发的本质 二.用户上传的静态文件的展示 1. media配置 2. 手动开设media接口 三.图片防盗链 一.admin后台管理 djang ...

  10. Go的指针

    目录 指针 一.指针的声明 二.指针的默认值(Zero Value) 三.指针的解引用 四.向函数传递指针参数 1.非 数组/切片 指针传参 2.数组/切片 指针传参 五.Go不支持指针运算 指针 指 ...