美文网首页
上海大学生网络安全 Reverse What

上海大学生网络安全 Reverse What

作者: 喝豆腐脑加糖 | 来源:发表于2018-11-05 17:16 被阅读0次

    这题做的时候思路出现问题,看着wp抠了很长的时间才弄出来。

    smc md5爆破 srand值的预测

    程序的逻辑没什么问题。 图片.png 图片.png

    来算下6位的字符串0的个数*10+0等于403的情况。


    图片.png

    前面不存在是因为10个0,sum不可能是303的,后面不存在0超过14位的。

    from itertools import permutations
    from hashlib import md5
    
    table=string.ascii_lowercase
    
    match=''
    
    j=0
    for res in permutations(table,6):
        j+=1
        if j % 100000==0: print float(j)*100/308915776
        proof=''.join(res)
        tmp=md5(proof).hexdigest()
        a1=0
        a2=0
        for i in range(len(tmp)):
            if tmp[i]=='0':
                a1+=1
                a2+=i
        if 10*a1+a2==403:
            match+=proof+'\n'
            print proof
    print match
    

    爆破找到符合的字符串:ozulmt
    md5加密之后为:0ec448d42dbf0000c020c0000048010e

    关键分析decode函数


    图片.png

    (其实里面是324字节,只解密运算305个)

    使用ida找到check函数


    图片.png

    截取出来


    图片.png

    逐字节读出,进行解密


    图片.png 图片.png

    再将check 覆盖保存,重新载入查看check部分。


    图片.png 图片.png
    #include<stdio.h>
    #include<stdlib.h>
    int main(){
        srand(300);
        int i;
        printf("flag{");
        for (i=0;i<32;i++){
            int a=rand()%16;
            if (i==8) printf("-");
            if (i==12) printf("-");
            if (i==16) printf("-");
            if (i==20) printf("-");
            if (a<=9)
                printf("%c",48+a);
            else
                printf("%c",97+(a-10));
            
        }
        printf("}");
        
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:上海大学生网络安全 Reverse What

          本文链接:https://www.haomeiwen.com/subject/fevjxqtx.html