逆向之攻防世界(新手区)(3)

3.《open-source》

根据题目指点,编译后直接对源代码进行分析,下面的注释就是解题过程

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    if (argc != 4) {                          //判断输入参数,这里除程序名还需要写3个
    	printf("what?\n");
    	exit(1);
    }

    unsigned int first = atoi(argv[1]);        //第一处输入十进制51966
    if (first != 0xcafe) {
    	printf("you are wrong, sorry.\n");
    	exit(2);
    }

    unsigned int second = atoi(argv[2]);
    if (second % 5 == 3 || second % 17 != 8) {    //第二处逻辑判断,前后两个条件都不能符合
    	printf("ha, you won't get it!\n");
    	exit(3);
    }

    if (strcmp("h4cky0u", argv[3])) {            //第三处比较判断,直接输入h4cky0u
    	printf("so close, dude!\n");
    	exit(4);
    }

    printf("Brr wrrr grr\n");

    unsigned int hash = first * 31337 + (second % 17) * 11 + strlen(argv[3]) - 1615810207;

    printf("Get your key: ");
    printf("%x\n", hash);
    return 0;
}

第二处的脚本

for a range (0,100):
    if (a % 5 != 3 and a % 17 == 8):
        print (a)

得出a可为25,然后得到flag   

4.《insanity》

我醉了。。。小朋友你是否有很多问号

5.《simple-unpack》

1.脱壳

2.IDA二进制打开

发布了25 篇原创文章 · 获赞 14 · 访问量 5445

猜你喜欢

转载自blog.csdn.net/qq_40568770/article/details/105128093
今日推荐