攻防世界 maze NJUPT CTF 2017
迷宫题
1 __int64 __fastcall main(__int64 a1, char **a2, char **a3)
2 {
3 signed __int64 mid_i; // rbx
4 signed int mid_str; // eax
5 bool v5; // bp
6 bool v6; // al
7 const char *v7; // rdi
8 __int64 arr; // [rsp+0h] [rbp-28h]
9
10 arr = 0LL;
11 puts("Input flag:");
12 scanf("%s", &s1, 0LL);
13 if ( strlen(&s1) != 24 || strncmp(&s1, "nctf{", 5uLL) || *(&byte_6010BF + 24) != '}' )// 输入24位,前5位为ntcf{ 第24位是}
14 {
15 LABEL_22:
16 puts("Wrong flag!");
17 exit(-1);
18 }
19 mid_i = 5LL;
20 if ( strlen(&s1) - 1 > 5 )
21 {
22 while ( 1 )
23 {
24 mid_str = *(&s1 + mid_i); // 从输入的第5位开始
25 v5 = 0;
26 if ( mid_str > 'N' )
27 {
28 mid_str = mid_str;
29 if ( mid_str == 'O' )
30 {
31 v6 = l_sub_400650(&arr + 1); // 操作j 列 'O'对应左
1 bool __fastcall sub_400650(_DWORD *a1)
2 {
3 int v1; // eax
4
5 v1 = (*a1)--;
6 return v1 > 0;
7 }
32 goto LABEL_14;
33 }
34 if ( mid_str == 'o' )
35 {
36 v6 = l_add_400660(&arr + 1); // 操作j 列 'o'对应右
37 goto LABEL_14;
38 }
39 }
40 else
41 {
42 mid_str = mid_str;
43 if ( mid_str == '.' )
44 {
45 v6 = h_sub_400670(&arr); // 操作i 行 '.'对应上
1 bool __fastcall sub_400670(_DWORD *a1)
2 {
3 int v1; // eax
4
5 v1 = (*a1)--;
6 return v1 > 0;
7 }
46 goto LABEL_14;
47 }
48 if ( mid_str == '0' )
49 {
50 v6 = h_sub_400680(&arr); // 操作i 行 '0'对应下
51 LABEL_14:
52 v5 = v6;
53 goto LABEL_15;
54 }
55 }
56 LABEL_15:
57 if ( !check_400690(asc_601060, SHIDWORD(arr), arr) )// 走' ' 或者 '#'
58 // #define HIDWORD(x) (((_DWORD)&(x)+1))
59 //
60 // ******* * **** * **** * *** *# *** *** *** *********
61 goto LABEL_22;
62 if ( ++mid_i >= strlen(&s1) - 1 )
63 {
64 if ( v5 )
65 break;
66 LABEL_20:
67 v7 = "Wrong flag!";
68 goto LABEL_21;
69 }
70 }
71 }
72 if ( asc_601060[8 * arr + SHIDWORD(arr)] != '#' )// 最终移动到#
73 goto LABEL_20;
74 v7 = "Congratulations!";
75 LABEL_21:
76 puts(v7);
77 return 0LL;
78 }
处理脚本:
1 import numpy as np
2 q='nctf{'
3 h='}'
4 asc=' ******* * **** * **** * *** *# *** *** *** *********'
5 mg=np.array(list(asc))
6 print(str(mg.reshape(int(len(asc)/8),8)).replace('\'',''))
7 # [[ * * * * * *]
8 # [* * *]
9 # [* * * * * *]
10 # [* * * * *]
11 # [* * # *]
12 # [* * * * * *]
13 # [* * *]
14 # [* * * * * * * *]]
15 mid_str='右下右右下下左下下下右右右右上上左左'.replace('上','.').replace('下','0').replace('左','O').replace('右','o')
16 print(q+mid_str+h)
17 # nctf{o0oo00O000oooo..OO}
//'O'
攻防世界 maze NJUPT CTF 2017的更多相关文章
- 逆向-攻防世界-maze
题目提示是走迷宫. IDA载入程序分析. 输入字符长度必须是24,开头必须是nctf{,结尾必须是}.在125处按R就可以变成字符. sub_400650和sub_400660是关键函数,分析sub_ ...
- 攻防世界Hello,CTF writeup
解题过程 首先在ida中进行反汇编,查看main函数的代码: 代码的的36行处进行了一个字符串比较,如果v10的值等于v13的值会反馈一个success的输出.v13的值在第15行给出,因此需要知道v ...
- 攻防世界--maze
测试文件下载:https://adworld.xctf.org.cn/media/task/attachments/fa4c78d25eea4081864918803996e615 1.准备 获得信息 ...
- 攻防世界 csaw2013reversing2 CSAW CTF 2014
运行程序 flag显示乱码 IDA打开查看程序逻辑 1 int __cdecl __noreturn main(int argc, const char **argv, const char **en ...
- 攻防世界 reverse 新手练习区
1.re1 DUTCTF IDA shift+F12 查看字符串 DUTCTF{We1c0met0DUTCTF} 2.game ZSCTF zsctf{T9is_tOpic_1s_v5ry_int7r ...
- 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup
攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...
- CTF -攻防世界-crypto新手区(5~11)
easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间 明明没算错 ...
- 攻防世界 reverse evil
这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...
- 攻防世界 | CAT
来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...
随机推荐
- js中当for循环中有事件要使用循环变量时,变量用var声明和let声明的区别
var 声明一个全局变量,声明的变量会变量提升: let 声明一个局部变量: 当页面加载完后,for循环也结束了,如果用var声明的变量此时也随着for循环的结束而自增到满足结束循环的条件, 此时调用 ...
- js sort tricks All In One
js sort tricks All In One js 排序技巧 const arr = [ { label: 'False 1 ', disabled: false, }, { label: 'F ...
- 前端使用 js 如何实现大文件上传
前端使用 js 如何实现大文件上传 大文件上传 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- HTML script tag type all in one
HTML script tag type all in one script type https://developer.mozilla.org/en-US/docs/Web/HTML/Elemen ...
- 微信小程序批量上传图片 All In One
微信小程序批量上传图片 All In One open-data https://developers.weixin.qq.com/miniprogram/dev/component/open-dat ...
- Google & Chrome console & text adventure game
Google & Chrome console & text adventure game Google's text adventure game https://www.googl ...
- Dart & data type(static / dynamic)
Dart & data type(static / dynamic) Darts 飞镖 标枪 javelin/darts type https://dartpad.dartlang.org/ ...
- node.js & create file
node.js & create file node js create file if not exists https://nodejs.org/api/fs.html#fs_fs_ope ...
- js & Event Bus
js & Event Bus global event handler (broadcast / trigger / emit / listen ) // 实现一个 EventBus类,这个类 ...
- c++ 设置桌面壁纸(win)
#include <iostream> #include <Windows.h> int main() { const char* path = "C:\\Users ...