[WUSTCTF2020]Cr0ssfun
打开
#include<iostream>
using namespace std;
int main()
{
char a1[32];
a1[1] = 'c';a1[25] ='@' ; a1[27] = 'e';
a1[4] = '2';
a1[17] = 'r';
a1[29] = 'f';
a1[17]= 'r';
a1[24] = '_';
a1[2] = 't';
a1[9] = 'c';
a1[32] = '}';
a1[19] = 'v';
a1[5] = '0';
a1[14] = 'n';
a1[15] = 'd';
a1[8] ='{';
a1[18] = '3';
a1[28] = '_';
a1[21] = 'r';
a1[0] = 'w';
a1[6] = '2';
a1[22] = 's';
a1[31] = 'n';
a1[12] = '_';
a1[7] = '0';
a1[16] = '_';
a1[11] = 'p';
a1[23] = 'e';
a1[30] = 'u';
a1[10] = 'p';
a1[13] = '@';
a1[3] = 'f';
a1[26] = 'r';
a1[20] = 'e';
for(int i=0;i<=32;i++)cout << a1[i];
}
好一目了然的题啊
[GWCTF 2019]xxor
64位进入
进入下面那个400770函数
数字比较大用z3
进入上面那个400686
逆回去逆回去
先处理v4,然后v3,最后v5即可。
查看a2数组是什么
#include <iostream>
using namespace std;
int main()
{
__int64 a[6] = { 3746099070, 550153460, 3774025685, 1548802262, 2652626477, 2230518816 };
unsigned int a2[4] = { 2,2,3,4 };
unsigned int v3, v4;
int v5;
for (int j = 0; j <= 4; j += 2) {
v3 = a[j];
v4 = a[j + 1];
v5 = 1166789954*0x40;
for (int i = 0; i <= 0x3F; ++i) {
v4 -= (v3 + v5 + 20) ^ ((v3 << 6) + a2[2]) ^ ((v3 >> 9) + a2[3]) ^ 0x10;
v3 -= (v4 + v5 + 11) ^ ((v4 << 6) + *a2) ^ ((v4 >> 9) + a2[1]) ^ 0x20;
v5 -= 1166789954;
}
a[j] = v3;
a[j + 1] = v4;
}
//小端排序
for (int i = 0; i < 6; ++i) {
cout << *((char*)&a[i] + 2) << *((char*)&a[i] + 1) << * ((char*)&a[i]);
}
return 0;
}
[UTCTF2020]basic-re
简单计算器
查找字符串
[FlareOn6]Overlong
参考:http://t.csdnimg.cn/wGRC9
参考:http://t.csdnimg.cn/waSQs
参考:http://t.csdnimg.cn/NUDAw
参考:http://t.csdnimg.cn/J4vd8
看了一下有脚本和动态调试两种方式
有时间学一下od吧看着打补丁更简单一点
我累了疲惫.JPG
长得好复杂啊不长得真高级
等以后心情好了再说吧