IDF实验室:初探乾坤-Fuck your brain
来源:互联网 发布:对阿里云的理解 编辑:程序博客网 时间:2024/05/01 17:56
ctf.idf.cn/index.php?g=game&m=article&a=index&id=54
题目:
Fuck your brain
这是什么,你能理解它吗?
++++++++++++[>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++<<<<<<<-]>>>>+++.<-----.>---.<+++.>>>>+++.<<<<----.>>>++++++.<<<<<+++.--.>>>>>----.<<<++++.<<+++.>>>>+++.>---.>++.
搜索题目得 Brainfuck
BrainFuck只有八条指令:
编程解码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define TOKENS "><+-.,[]"
#define CODE_SEGMENT_SIZE 30000
#define STACK_SEGMENT_SIZE 1000
#define DATA_SEGMENT_SIZE 30000
typedef void (*Callback)(void);
struct {
char cs[CODE_SEGMENT_SIZE]; /* Code Segment */
long ip; /* Instruction Pointer */
char ss[STACK_SEGMENT_SIZE]; /* Stack Segment */
long sp; /* Stack Pointer */
char ds[DATA_SEGMENT_SIZE]; /* Data Segment */
long bp; /* Base Pointer */
Callback fn[128];
} vm;
void vm_forward() {
vm.bp = (vm.bp + 1) % DATA_SEGMENT_SIZE;
}
void vm_backward() {
vm.bp = (vm.bp + DATA_SEGMENT_SIZE - 1) % DATA_SEGMENT_SIZE;
}
void vm_increment() {
vm.ds[vm.bp]++;
}
void vm_decrement() {
vm.ds[vm.bp]--;
}
void vm_input() {
vm.ds[vm.bp] = getchar();
}
void vm_output() {
putchar(vm.ds[vm.bp]);
}
void vm_while_entry() {
if (vm.ds[vm.bp]) {
vm.ss[vm.sp] = vm.ip - 1;
vm.sp++;
} else {
int c = 1;
for (vm.ip++; vm.cs[vm.ip] && c; vm.ip++) {
if (vm.cs[vm.ip] == '[') {
c++;
} else if (vm.cs[vm.ip] == ']') {
c--;
}
}
}
}
void vm_while_exit() {
if (vm.ds[vm.bp]) {
vm.sp--;
vm.ip = vm.ss[vm.sp];
}
}
void setup() {
int c;
int i;
memset(&vm, 0, sizeof(vm));
vm.fn['>'] = vm_forward;
vm.fn['<'] = vm_backward;
vm.fn['+'] = vm_increment;
vm.fn['-'] = vm_decrement;
vm.fn['.'] = vm_output;
vm.fn[','] = vm_input;
vm.fn['['] = vm_while_entry;
vm.fn[']'] = vm_while_exit;
for (i = 0; (c = getchar()) != EOF;) {
if (strchr(TOKENS, c)) {
vm.cs[i] = c;
i++;
}
}
}
void run() {
while (vm.cs[vm.ip]) {
vm.fn[vm.cs[vm.ip]]();
vm.ip++;
}
}
int main(int argc, char* argv[]) {
if (argc > 1) {
freopen(argv[1], "r", stdin);
}
setup();
run();
return 0;
}
使用方法:
brainfuc$ cat helloword.bf
Hello World!
程序代码来自:blog.csdn.net/redraiment/article/details/7483062
得出flag;
- IDF实验室:初探乾坤-Fuck your brain
- IDF实验室之初探乾坤Fuck your brain
- IDF实验室之初探乾坤Fuck you brain
- ctfIDF实验室Fuck your brain
- IDF实验室·初探乾坤1-3
- Brainfuck Fuck your brain
- IDF实验室之初探乾坤简单编程-字符统计
- IDF实验室:初探乾坤--简单编程-字符统计
- idf实验室
- Brain Fuck 和 WhiteSpace语言
- pwnable 笔记 Rookiss - brain fuck - 150 pt
- Buff Your Brain I
- buff your brain Ⅱ
- Buff Your Brain Ⅲ
- IDF实验室WriteUp
- IDF实验室:牛刀小试--啥?
- IDF实验室-抓到一只苍蝇
- IDF实验室-谁是卧底
- DB_NAME,SID,ORACLE_SID等参数的剖析
- git cmd lits 4
- 多边形裁剪圆的实现细节之求出一段圆弧的中点
- OpenSSL_AES加密库API功能
- SharedPreferences被清空的问题
- IDF实验室:初探乾坤-Fuck your brain
- 第二章 认识数据
- java文件写入注意点
- git cmd list 5
- Linux 系统下的 proc 目录
- spring 常缺的包
- node.js认识学习四:node之初之体验
- 第三章 数据预处理
- Hackthissite Basic-Writeup