CTF小技巧

将整数强制拆分为 string

#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main(){
    long long v7=28537194573619560;
    char *p=(char *)&v7;//chr指针
    char str[30];
    strcpy(str,":\"AL_RT^L*.?+6/46");
    for(int i=0;i<19;i++){
        str[i]=p[i%7]^str[i];
        printf("%c",str[i]);
    }
    return 0;
}

md5碰撞。

根据==用法,0 == 字符串是成立的,从而可以绕过MD5检查。

QNKCDZO 
s878926199a 
s155964671a 
s214587387a 
s214587387a 
s878926199a 
s1091221200a 
s1885207154a 
aabC9RqS 
240610708 
aabg7XSs

md5() sha1()

MD5() 和 SHA1() 不能处理数组,PHP中会返回 false 构造sha1(str1)===sha1(str2) str1!=str2 时可以构造数组绕过