open-source - 攻防世界(adword)逆向集合

open-source

文件

file: 8b6405c25fe447fa804c6833a0d72808.c

sha1: 23b35fa93a496385b904e1b74d487e589c436949

源码分析

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

int main(int argc, char *argv[]) {
    if (argc != 4) {
        printf("what?\n");
        exit(1);
    }

    unsigned int first = atoi(argv[1]);
    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])) {
        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;
}

运行需要提供三个参数第一个是0xcafe,第二个需要满足second % 5 == 3 || second % 17 != 8,第三个是h4cky0u。即可得到key

使用gcc编译运行输入三个参数得到结果:

> ./a.out 51966 25 h4cky0u
Brr wrrr grr
Get your key: c0ffee

我编译时报错,提示缺少头文件stdlib.h,正确导入之后就可以编译成功了。

flag

c0ffee

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容