CTF
  • Introduction
  • IDF 实验室
    • 牛刀小试
      • 被改错的密码
      • ASCII 码而已
      • 聪明的小羊
      • 摩斯密码
      • 啥?
    • CRYPTO 百密一疏
      • 笨笨的小猪
      • 凯撒加密
      • 孔子的学费
      • 特殊的日子
      • 伟人的名字
    • WEB天罗地网
      • COOKIE欺骗
      • 不难不易的js加密
      • 超简单的js题
      • 古老的邮件编码
      • 简单的js解密
      • 你关注最新的漏洞吗
      • 一种编码而已
    • STEGA万里寻踪
      • 图片里的秘密
      • 上帝也哭泣
      • 红与黑
    • PPC初探乾坤
      • 简单编程-字符统计
      • Fuck your brain
      • 谁是卧底
    • REVERSE倒行逆施
      • 简单的PE文件逆向
      • 简单的ELF逆向
      • python ByteCode
    • MISC包罗万象
      • 图片里的英语
      • 抓到一只苍蝇
  • 实验吧
    • WEB
      • 登陆一下好吗??
      • 注入
      • 简单的sql注入
      • Forms
Powered by GitBook
On this page
  • 题目
  • write up

Was this helpful?

  1. IDF 实验室
  2. PPC初探乾坤

Fuck your brain

Previous简单编程-字符统计Next谁是卧底

Last updated 5 years ago

Was this helpful?

题目

++++++++++++[>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++<<<<<<<-]>>>>+++.<-----.>---.<+++.>>>>+++.<<<<----.>>>++++++.<<<<<+++.--.>>>>>----.<<<++++.<<+++.>>>>+++.>---.>++.

write up

Brain Fuck编程语言,利用C语言编译器即可,源码看main.cpp(由 得):

#include <stdio.h>  
int  p, r, q;  
char a[5000], f[5000], b, o, *s=f;  
void interpret(char *c)  
{  
    char *d;  
    r++;  
    while( *c ) {  

        switch(o=1,*c++) {  
            case '<': p--;        break;  
     case '>': p++;        break;  
            case '+': a[p]++;     break;  
            case '-': a[p]--;     break;  
            case '.': putchar(a[p]); fflush(stdout); break;  
            case ',': a[p]=getchar();fflush(stdout); break;  
            case '[':  
                for( b=1,d=c; b && *c; c++ )  
                b+=*c=='[', b-=*c==']';  
                if(!b) {  
                    c[-1]=0;  
                    while( a[p] )  
                    interpret(d);  
                    c[-1]=']';  
                    break;  
                }  
            case ']':  
                puts("UNBALANCED BRACKETS"), exit(0);  
            case '#':  
  if(q>2)  
                printf("- - - - - - - - - -/n%*s/n",*a,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],3*p+2,"^");  
                break;  
            default: o=0;  
        }  
 if( p<0 || p>100)  
            puts("RANGE ERROR"), exit(0);  
    }  
    r--;  

}  
int main(int argc,char *argv[])  
{  
    FILE *z;  
    q=argc;  
    if(z=fopen(argv[1],"r")) {  
 while( (b=getc(z)) > 0 )  
            *s++=b;  
        *s=0;  
        interpret(f);  
    }  
return 0;  
}

使用方法,编译完成后,输入一个文件,文件内容即题目给的那一堆。

http://blog.csdn.net/key1213/article/details/19247215