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. 末日余晖 PC 版 下载

    末日余晖 PC 版 下载 <末日余晖>(英文名:Farlight 84)一款废土题材的射击游戏 Farlight 84 Official Trailer Farlight 84 官方预告片 ...

  2. gitignore auto generator

    gitignore auto generator .gitignore https://gitignore.io/ https://www.toptal.com/developers/gitignor ...

  3. js & regex & var & highlight

    js & regex & var & highlight let key = `ali`.toLocaleUpperCase(); let name = "阿里云计算 ...

  4. shit 环信 IM SDK & IM SDK & web

    shit 环信 IM SDK & IM SDK & web 环信 IM SDK, 采坑大全 自己写 UI appkey 是否正确 password 是字符串,不是 数字 HTTPS 是 ...

  5. taro list render bug

    taro list render bug 列表渲染 https://taro-docs.jd.com/taro/docs/list.html not support jsx map 垃圾微信 cons ...

  6. news of javascript

    news of javascript https://javascriptweekly.com/ https://javascriptweekly.com/issues https://www.inf ...

  7. CSS布局,div居中,文字居中

    .main { width: 100%; margin: 0 auto; .banner { img { width: 100%; } } .article { margin-bottom: 100p ...

  8. CentOS7上安装伪分布式Hadoop

    1.下载安装包 下载hadoop安装包 官网地址:https://hadoop.apache.org/releases.html 版本:建议使用hadoop-2.7.3.tar.gz 系统环境:Cen ...

  9. Spring—Document root element "beans", must match DOCTYPE root "null"分析及解决方法

    网上很多人说要把applicationContex.xml文件中加上如下第二行的<!DOCTYPE/>标签,说明DTD.<?xml version="1.0" e ...

  10. Vue学习笔记-Vue.js-2.X 学习(七)===>脚手架Vue-CLI(路由Router)

    脚手架Vue-CLI(路由Router) 一 按装(通过新创建脚手架按装),如果在原来的脚手架上按装直接进图型化界面vue ui的插件按装. 二 使用(上面按装下面步骤自动会生成) 第一步:导入路由对 ...