RE签到题:
这道题看起来怪怪的 然后 查看文件是elf32 然后 运行 发现是
emmmmm 这个么
然后只能拖入ida 看见
直接 拖入运行 就ok了
#include<stdio.h>
char v6[10];
char v7[26];
char v8[26];
int main()
{
for(int i=0;i<10;i++)
v6[i]=i+48;
for(int i=0;i<26;i++)
{
v7[i]=i+65;
v8[i]=i-94;
}
printf("%c", v8[22] - 65);
printf("%c%c", v8[15] - 65, v8[18] - 65);
printf("%c%c%c", v8[4] - 65, v8[2] - 65, 123);
printf("%c%c%c%c", v7[5], 48, v8[17] - 65, v6[1]);
printf("%c%c%c%c%c", v8[8] - 65, v7[13], v8[20] - 65, v8[23] - 65, 125);
return 0;
}
wpsec{F0r1iNux}
程序自校验:
这个是汇编写的程序。。。。。
这个题 是 吾爱破解的creakme。。 好眼熟啊 不过这道题确实难 我都看了一下午 才分析了出来 直接看 图吧
断点就没有什么好说的 直接api 就可以段下来 或者查找字符串 从上向下分析 然后这道题 就很坑爹了。。
幸亏我上面看过这种题 就是 必须获得正确的序列号还有正确的名字 然后这道题静下心看 也不是很难 然后写出注册机就ok了
以前做的时候直接改跳转 注册机还真的没有写出来。。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <windows.h>
using namespace std;
unsigned char * buff;
unsigned long key;
unsigned long name1;
unsigned long h;
unsigned long l;
char *name;
unsigned long ser;
unsigned char data[0x3E*4+1] = { 0x55, 0x8B, 0xEC, 0x83, 0xC4, 0xFC, 0x8B, 0x45, 0x0C, 0x83, 0xF8, 0x10, 0x75, 0x0D, 0x6A, 0x00, 0xE8, 0x6B, 0x02, 0x00, 0x00, 0x33, 0xC0, 0xC9,
0xC2, 0x10, 0x00, 0x83, 0xF8, 0x0F, 0x75, 0x0E, 0x8B, 0x45, 0x08, 0xE8, 0x18, 0x01, 0x00, 0x00, 0x33, 0xC0, 0xC9, 0xC2, 0x10, 0x00, 0x83, 0xF8,
0x01, 0x75, 0x06, 0x33, 0xC0, 0xC9, 0xC2, 0x10, 0x00, 0x3D, 0x11, 0x01, 0x00, 0x00, 0x0F, 0x85, 0xE7, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x14, 0x3B,
0x05, 0x60, 0x31, 0x40, 0x00, 0x75, 0x1A, 0x6A, 0x00, 0x68, 0x96, 0x30, 0x40, 0x00, 0x68, 0xA7, 0x30, 0x40, 0x00, 0xFF, 0x75, 0x08, 0xE8, 0x17,
0x02, 0x00, 0x00, 0x33, 0xC0, 0xC9, 0xC2, 0x10, 0x00, 0x3B, 0x05, 0x58, 0x31, 0x40, 0x00, 0x74, 0x0C, 0x3B, 0x05, 0x54, 0x31, 0x40, 0x00, 0x0F,
0x85, 0xAE, 0x00, 0x00, 0x00, 0xC7, 0x05, 0xD9, 0x12, 0x40, 0x00, 0x54, 0x45, 0x58, 0x00, 0x6A, 0x00, 0x8D, 0x45, 0xFC, 0x50, 0x6A, 0x64, 0xFF,
0x35, 0x50, 0x31, 0x40, 0x00, 0xE8, 0xBC, 0x01, 0x00, 0x00, 0x83, 0x7D, 0xFC, 0x00, 0x74, 0x5F, 0x50, 0x6A, 0x14, 0x68, 0x6C, 0x31, 0x40, 0x00,
0xFF, 0x35, 0x54, 0x31, 0x40, 0x00, 0xE8, 0xAF, 0x01, 0x00, 0x00, 0x85, 0xC0, 0x74, 0x48, 0xA1, 0x0B, 0x30, 0x40, 0x00, 0xBB, 0x6C, 0x31, 0x40,
0x00, 0x03, 0x03, 0x43, 0x81, 0xFB, 0x7C, 0x31, 0x40, 0x00, 0x75, 0xF5, 0x5B, 0x03, 0xC3, 0x31, 0x05, 0xD9, 0x12, 0x40, 0x00, 0xC1, 0xE8, 0x10,
0x66, 0x29, 0x05, 0xD9, 0x12, 0x40, 0x00, 0xBE, 0xEC, 0x11, 0x40, 0x00, 0xB9, 0x3E, 0x00, 0x00, 0x00, 0x33, 0xDB, 0xEB, 0x04, 0x00, 0x00, 0x00,
0x00, 0xAD, 0x33, 0xD8, 0x49, 0x75, 0xFA, 0x81,0 };
int main()
{
key = 0xAFFCCFFB; //初始化为最终判断值 0xAFFCCFFB
buff = data;
ser = 0;
name = new char[250];
memset(name, 0, 250);
for (int x = 0; x < 0x3E * 4; x += 4)
{
key = key ^ *(unsigned long *)&buff[x];//开始异或
}
key = (key << 24) + (key >> 8);//调整字节顺序
gets(name);
name1 = 0x58455443;//我们那个CTEX 字符串
unsigned long *t1=0;
for (int x =0 ; x < 0x10; x++)
{
t1 = (unsigned long *)&name[x];
name1 = name1 + *t1;
}
h = key >> 16; //取出高位
l = key & 0x0000ffff; //取出低位
l = l +( h^0x58);
key = (h << 16) + l;
key = key ^ 0x584554;
ser = key - (name1);
cout << "key:" << dec << ser << endl;
buff = NULL;
if (name != NULL)
delete[] name;
name = NULL;
system("pause");
return 0;
}
这里参考了 别人的代码 直接运行 得出号就行
然后喵的注册机 断下messagebox
然后发现这个题 不像是vc写的啊 反汇编看起来好繁琐啊
然后 最后直接爆出结果 。。。。
听说你不想学现代?
这道题 emmm 看起来就感觉很难搞 但是仔细看看的话 其实还是有突破点的
这里看的虽然有很多相加 相乘的伪c 但是 我们仔细看看 还是发现有很多好玩之处的
也就是说 感觉v6 v7 v8 是一个整体
果然改了之后感觉就很舒服 !但是不会矩阵解题 然后爆破 我这辈子都跑不出来答案。。
#include<stdio.h>
#include<windows.h>
char a[20];
void ppx(int sum)
{
if(sum==20)
{
a[sum]='\0';
if (1009 * a[0] + 1129 * a[1] + 1289 * a[2] + 1447 * a[3] + 1579 * a[4] + 1723 * a[5] + 1879 * a[6] + 2039 * a[7] + 2207 * a[8] + 2351 * a[9] + 2521 * a[10] + 2683 * a[11] + 2803 * a[12] + 2971 * a[13] + 3169 * a[14] + 3329 * a[15] + 3499 * a[16] + 3637 * a[17] + 3803 * a[18] + 3967 * a[19] == 4961785 && 1151 * a[0] + 1291 * a[1] + 1451 * a[2] + 1583 * a[3] + 1733 * a[4] + 1889 * a[5] + 2053 * a[6] + 2213 * a[7] + 2357 * a[8] + 2531 * a[9] + 2687 * a[10] + 2819 * a[11] + 2999 * a[12] + 3181 * a[13] + 3331 * a[14] + 3511 * a[15] + 3643 * a[16] + 3821 * a[17] + 3989 * a[18] + 1013 * a[19] == 4924355 && 1297 * a[0] + 1453 * a[1] + 1597 * a[2] + 1741 * a[3] + 1901 * a[4] + 2063 * a[5] + 2221 * a[6] + 2371 * a[7] + 2539 * a[8] + 2689 * a[9] + 2833 * a[10] + 3001 * a[11] + 3187 * a[12] + 3343 * a[13] + 3517 * a[14] + 3659 * a[15] + 3823 * a[16] + 4001 * a[17] + 1019 * a[18] + 1153 * a[19] == 4901419 && 1459 * a[0] + 1601 * a[1] + 1747 * a[2] + 1907 * a[3] + 2069 * a[4] + 2237 * a[5] + 2377 * a[6] + 2543 * a[7] + 2693 * a[8] + 2837 * a[9] + 3011 * a[10] + 3191 * a[11] + 3347 * a[12] + 3527 * a[13] + 3671 * a[14] + 3833 * a[15] + 4003 * a[16] + 1021 * a[17] + 1163 * a[18] + 1301 * a[19] == 4915459 && 1607 * a[0] + 1753 * a[1] + 1913 * a[2] + 2081 * a[3] + 2239 * a[4] + 2381 * a[5] + 2549 * a[6] + 2699 * a[7] + 2843 * a[8] + 3019 * a[9] + 3203 * a[10] + 3359 * a[11] + 3529 * a[12] + 3673 * a[13] + 3847 * a[14] + 4007 * a[15] + 1031 * a[16] + 1171 * a[17] + 1303 * a[18] + 1471 * a[19] == 4868261 && 1759 * a[0] + 1931 * a[1] + 2083 * a[2] + 2243 * a[3] + 2383 * a[4] + 2551 * a[5] + 2707 * a[6] + 2851 * a[7] + 3023 * a[8] + 3209 * a[9] + 3361 * a[10] + 3533 * a[11] + 3677 * a[12] + 3851 * a[13] + 4013 * a[14] + 1033 * a[15] + 1181 * a[16] + 1307 * a[17] + 1481 * a[18] + 1609 * a[19] == 4825167 && 1933 * a[0] + 2087 * a[1] + 2251 * a[2] + 2389 * a[3] + 2557 * a[4] + 2711 * a[5] + 2857 * a[6] + 3037 * a[7] + 3217 * a[8] + 3371 * a[9] + 3539 * a[10] + 3691 * a[11] + 3853 * a[12] + 4019 * a[13] + 1039 * a[14] + 1187 * a[15] + 1319 * a[16] + 1483 * a[17] + 1613 * a[18] + 1777 * a[19] == 4794225 && 2089 * a[0] + 2267 * a[1] + 2393 * a[2] + 2579 * a[3] + 2713 * a[4] + 2861 * a[5] + 3041 * a[6] + 3221 * a[7] + 3373 * a[8] + 3541 * a[9] + 3697 * a[10] + 3863 * a[11] + 4021 * a[12] + 1049 * a[13] + 1193 * a[14] + 1321 * a[15] + 1487 * a[16] + 1619 * a[17] + 1783 * a[18] + 1949 * a[19] == 4760281 && 2269 * a[0] + 2399 * a[1] + 2591 * a[2] + 2719 * a[3] + 2879 * a[4] + 3049 * a[5] + 3229 * a[6] + 3389 * a[7] + 3547 * a[8] + 3701 * a[9] + 3877 * a[10] + 4027 * a[11] + 1051 * a[12] + 1201 * a[13] + 1327 * a[14] + 1489 * a[15] + 1621 * a[16] + 1787 * a[17] + 1951 * a[18] + 2099 * a[19] == 4734733 && 2411 * a[0] + 2593 * a[1] + 2729 * a[2] + 2887 * a[3] + 3061 * a[4] + 3251 * a[5] + 3391 * a[6] + 3557 * a[7] + 3709 * a[8] + 3881 * a[9] + 4049 * a[10] + 1061 * a[11] + 1213 * a[12] + 1361 * a[13] + 1493 * a[14] + 1627 * a[15] + 1789 * a[16] + 1973 * a[17] + 2111 * a[18] + 2273 * a[19] == 4730929 && 2609 * a[0] + 2731 * a[1] + 2897 * a[2] + 3067 * a[3] + 3253 * a[4] + 3407 * a[5] + 3559 * a[6] + 3719 * a[7] + 3889 * a[8] + 4051 * a[9] + 1063 * a[10] + 1217 * a[11] + 1367 * a[12] + 1499 * a[13] + 1637 * a[14] + 1801 * a[15] + 1979 * a[16] + 2113 * a[17] + 2281 * a[18] + 2417 * a[19] == 4747889 && 2741 * a[0] + 2903 * a[1] + 3079 * a[2] + 3257 * a[3] + 3413 * a[4] + 3571 * a[5] + 3727 * a[6] + 3907 * a[7] + 4057 * a[8] + 1069 * a[9] + 1223 * a[10] + 1373 * a[11] + 1511 * a[12] + 1657 * a[13] + 1811 * a[14] + 1987 * a[15] + 2129 * a[16] + 2287 * a[17] + 2423 * a[18] + 2617 * a[19] == 4920757 && 2909 * a[0] + 3083 * a[1] + 3259 * a[2] + 3433 * a[3] + 3581 * a[4] + 3733 * a[5] + 3911 * a[6] + 4073 * a[7] + 1087 * a[8] + 1229 * a[9] + 1381 * a[10] + 1523 * a[11] + 1663 * a[12] + 1823 * a[13] + 1993 * a[14] + 2131 * a[15] + 2293 * a[16] + 2437 * a[17] + 2621 * a[18] + 2749 * a[19] == 4879937 && 3089 * a[0] + 3271 * a[1] + 3449 * a[2] + 3583 * a[3] + 3739 * a[4] + 3917 * a[5] + 4079 * a[6] + 1091 * a[7] + 1231 * a[8] + 1399 * a[9] + 1531 * a[10] + 1667 * a[11] + 1831 * a[12] + 1997 * a[13] + 2137 * a[14] + 2297 * a[15] + 2441 * a[16] + 2633 * a[17] + 2753 * a[18] + 2917 * a[19] == 4897933 && 3299 * a[0] + 3457 * a[1] + 3593 * a[2] + 3761 * a[3] + 3919 * a[4] + 4091 * a[5] + 1093 * a[6] + 1237 * a[7] + 1409 * a[8] + 1543 * a[9] + 1669 * a[10] + 1847 * a[11] + 1999 * a[12] + 2141 * a[13] + 2309 * a[14] + 2447 * a[15] + 2647 * a[16] + 2767 * a[17] + 2927 * a[18] + 3109 * a[19] == 4907643 && 3461 * a[0] + 3607 * a[1] + 3767 * a[2] + 3923 * a[3] + 4093 * a[4] + 1097 * a[5] + 1249 * a[6] + 1423 * a[7] + 1549 * a[8] + 1693 * a[9] + 1861 * a[10] + 2003 * a[11] + 2143 * a[12] + 2311 * a[13] + 2459 * a[14] + 2657 * a[15] + 2777 * a[16] + 2939 * a[17] + 3119 * a[18] + 3301 * a[19] == 4870465 && 3613 * a[0] + 3769 * a[1] + 3929 * a[2] + 4099 * a[3] + 1103 * a[4] + 1259 * a[5] + 1427 * a[6] + 1553 * a[7] + 1697 * a[8] + 1867 * a[9] + 2011 * a[10] + 2153 * a[11] + 2333 * a[12] + 2467 * a[13] + 2659 * a[14] + 2789 * a[15] + 2953 * a[16] + 3121 * a[17] + 3307 * a[18] + 3463 * a[19] == 5026317 && 3779 * a[0] + 3931 * a[1] + 4111 * a[2] + 1109 * a[3] + 1277 * a[4] + 1429 * a[5] + 1559 * a[6] + 1699 * a[7] + 1871 * a[8] + 2017 * a[9] + 2161 * a[10] + 2339 * a[11] + 2473 * a[12] + 2663 * a[13] + 2791 * a[14] + 2957 * a[15] + 3137 * a[16] + 3313 * a[17] + 3467 * a[18] + 3617 * a[19] == 5045171 && 3943 * a[0] + 4127 * a[1] + 1117 * a[2] + 1279 * a[3] + 1433 * a[4] + 1567 * a[5] + 1709 * a[6] + 1873 * a[7] + 2027 * a[8] + 2179 * a[9] + 2341 * a[10] + 2477 * a[11] + 2671 * a[12] + 2797 * a[13] + 2963 * a[14] + 3163 * a[15] + 3319 * a[16] + 3469 * a[17] + 3623 * a[18] + 3793 * a[19] == 5163611 && 4129 * a[0] + 1123 * a[1] + 1283 * a[2] + 1439 * a[3] + 1571 * a[4] + 1721 * a[5] + 1877 * a[6] + 2029 * a[7] + 2203 * a[8] + 2347 * a[9] + 2503 * a[10] + 2677 * a[11] + 2801 * a[12] + 2969 * a[13] + 3167 * a[14] + 3323 * a[15] + 3491 * a[16] + 3631 * a[17] + 3797 * a[18] + 3947 * a[19] == 5186559)
{
if (a[1] == a[3])
{
if (a[7] == a[10])
{
if (a[1] == a[7])
{
if (a[10] == '_')
{
printf("%s\n",a);
system("pause");
}
}
}
}
}
return;
}
for(int i=48;i<=122;i++)
{
a[sum++]=i;
ppx(sum);
sum--;
}
}
int main()
{
ppx(0);
return 0;
}
但是 有个新的方法是 z3约束
这是 py源码 但是没有跑出来 不知道是什么情况 但是这个方法确实可靠
from z3 import *
s = Solver()
a = [Int('a%d'%i) for i in range(20)]
for i in a:
s.add(0<i)
s.add(i<256)
s.add(a[1] == a[3])
s.add(a[7] == a[10])
s.add(a[1] == a[7])
s.add(a[10] == 0x5F)
s.add(1009 * a[0] + 1129 * a[1] + 1289 * a[2] + 1447 * a[3] + 1579 * a[4] + 1723 * a[5] + 1879 * a[6] + 2039 * a[7] + 2207 * a[8] + 2351 * a[9] + 2521 * a[10] + 2683 * a[11] + 2803 * a[12] + 2971 * a[13] + 3169 * a[14] + 3329 * a[15] + 3499 * a[16] + 3637 * a[17] + 3803 * a[18] + 3967 * a[19] == 4961785)
s.add(1151 * a[0] + 1291 * a[1] + 1451 * a[2] + 1583 * a[3] + 1733 * a[4] + 1889 * a[5] + 2053 * a[6] + 2213 * a[7] + 2357 * a[8] + 2531 * a[9] + 2687 * a[10] + 2819 * a[11] + 2999 * a[12] + 3181 * a[13] + 3331 * a[14] + 3511 * a[15] + 3643 * a[16] + 3821 * a[17] + 3989 * a[18] + 1013 * a[19] == 4924355)
s.add(1297 * a[0] + 1453 * a[1] + 1597 * a[2] + 1741 * a[3] + 1901 * a[4] + 2063 * a[5] + 2221 * a[6] + 2371 * a[7] + 2539 * a[8] + 2689 * a[9] + 2833 * a[10] + 3001 * a[11] + 3187 * a[12] + 3343 * a[13] + 3517 * a[14] + 3659 * a[15] + 3823 * a[16] + 4001 * a[17] + 1019 * a[18] + 1153 * a[19] == 4901419)
s.add(1459 * a[0] + 1601 * a[1] + 1747 * a[2] + 1907 * a[3] + 2069 * a[4] + 2237 * a[5] + 2377 * a[6] + 2543 * a[7] + 2693 * a[8] + 2837 * a[9] + 3011 * a[10] + 3191 * a[11] + 3347 * a[12] + 3527 * a[13] + 3671 * a[14] + 3833 * a[15] + 4003 * a[16] + 1021 * a[17] + 1163 * a[18] + 1301 * a[19] == 4915459)
s.add(1607 * a[0] + 1753 * a[1] + 1913 * a[2] + 2081 * a[3] + 2239 * a[4] + 2381 * a[5] + 2549 * a[6] + 2699 * a[7] + 2843 * a[8] + 3019 * a[9] + 3203 * a[10] + 3359 * a[11] + 3529 * a[12] + 3673 * a[13] + 3847 * a[14] + 4007 * a[15] + 1031 * a[16] + 1171 * a[17] + 1303 * a[18] + 1471 * a[19] == 4868261)
s.add(1759 * a[0] + 1931 * a[1] + 2083 * a[2] + 2243 * a[3] + 2383 * a[4] + 2551 * a[5] + 2707 * a[6] + 2851 * a[7] + 3023 * a[8] + 3209 * a[9] + 3361 * a[10] + 3533 * a[11] + 3677 * a[12] + 3851 * a[13] + 4013 * a[14] + 1033 * a[15] + 1181 * a[16] + 1307 * a[17] + 1481 * a[18] + 1609 * a[19] == 4825167)
s.add(1933 * a[0] + 2087 * a[1] + 2251 * a[2] + 2389 * a[3] + 2557 * a[4] + 2711 * a[5] + 2857 * a[6] + 3037 * a[7] + 3217 * a[8] + 3371 * a[9] + 3539 * a[10] + 3691 * a[11] + 3853 * a[12] + 4019 * a[13] + 1039 * a[14] + 1187 * a[15] + 1319 * a[16] + 1483 * a[17] + 1613 * a[18] + 1777 * a[19] == 4794225)
s.add(2089 * a[0] + 2267 * a[1] + 2393 * a[2] + 2579 * a[3] + 2713 * a[4] + 2861 * a[5] + 3041 * a[6] + 3221 * a[7] + 3373 * a[8] + 3541 * a[9] + 3697 * a[10] + 3863 * a[11] + 4021 * a[12] + 1049 * a[13] + 1193 * a[14] + 1321 * a[15] + 1487 * a[16] + 1619 * a[17] + 1783 * a[18] + 1949 * a[19] == 4760281)
s.add(2269 * a[0] + 2399 * a[1] + 2591 * a[2] + 2719 * a[3] + 2879 * a[4] + 3049 * a[5] + 3229 * a[6] + 3389 * a[7] + 3547 * a[8] + 3701 * a[9] + 3877 * a[10] + 4027 * a[11] + 1051 * a[12] + 1201 * a[13] + 1327 * a[14] + 1489 * a[15] + 1621 * a[16] + 1787 * a[17] + 1951 * a[18] + 2099 * a[19] == 4734733)
s.add(2411 * a[0] + 2593 * a[1] + 2729 * a[2] + 2887 * a[3] + 3061 * a[4] + 3251 * a[5] + 3391 * a[6] + 3557 * a[7] + 3709 * a[8] + 3881 * a[9] + 4049 * a[10] + 1061 * a[11] + 1213 * a[12] + 1361 * a[13] + 1493 * a[14] + 1627 * a[15] + 1789 * a[16] + 1973 * a[17] + 2111 * a[18] + 2273 * a[19] == 4730929)
s.add(2609 * a[0] + 2731 * a[1] + 2897 * a[2] + 3067 * a[3] + 3253 * a[4] + 3407 * a[5] + 3559 * a[6] + 3719 * a[7] + 3889 * a[8] + 4051 * a[9] + 1063 * a[10] + 1217 * a[11] + 1367 * a[12] + 1499 * a[13] + 1637 * a[14] + 1801 * a[15] + 1979 * a[16] + 2113 * a[17] + 2281 * a[18] + 2417 * a[19] == 4747889)
s.add(2741 * a[0] + 2903 * a[1] + 3079 * a[2] + 3257 * a[3] + 3413 * a[4] + 3571 * a[5] + 3727 * a[6] + 3907 * a[7] + 4057 * a[8] + 1069 * a[9] + 1223 * a[10] + 1373 * a[11] + 1511 * a[12] + 1657 * a[13] + 1811 * a[14] + 1987 * a[15] + 2129 * a[16] + 2287 * a[17] + 2423 * a[18] + 2617 * a[19] == 4920757)
s.add(2909 * a[0] + 3083 * a[1] + 3259 * a[2] + 3433 * a[3] + 3581 * a[4] + 3733 * a[5] + 3911 * a[6] + 4073 * a[7] + 1087 * a[8] + 1229 * a[9] + 1381 * a[10] + 1523 * a[11] + 1663 * a[12] + 1823 * a[13] + 1993 * a[14] + 2131 * a[15] + 2293 * a[16] + 2437 * a[17] + 2621 * a[18] + 2749 * a[19] == 4879937)
s.add(3089 * a[0] + 3271 * a[1] + 3449 * a[2] + 3583 * a[3] + 3739 * a[4] + 3917 * a[5] + 4079 * a[6] + 1091 * a[7] + 1231 * a[8] + 1399 * a[9] + 1531 * a[10] + 1667 * a[11] + 1663 * a[12] + 1823 * a[13] + 1993 * a[14] + 2131 * a[15] + 2293 * a[16] + 2437 * a[17] + 2621 * a[18] + 2749 * a[19] == 4879937)
if s.check() == sat:
print s.model()
然后后面有一道what 那个题 我以前做过 可以翻一下 就能出来
然后 那两道 好像都是要脱upx 但是是个变形壳。。。还要分析啊
啊 我失误了 我以为是变形壳 其实不是 只要 upx -d file -o file_ 就能脱掉了 然后 打开 文件
然后发现
嗯哼??? emmmm
然后点开flag 直接
直接提交flag 就可以做出来了。。。
NANA那个题 我学长和我说过 但是。。。。
emmm emmm 我还是不会 最后 经过一个 大四学长给了源码 还有wp之后 我也明白了这个题的思路
其实这个题很简单 (只是我想的麻烦了 然后这个题我的脚本也没有写出来 感觉是有一点问题的)
但是 最后还是看了题解把flag的值偷出来了 。。。。
已进入这个题 就有两个东西 一个是反调试 主要应该是监听端口 大于 15000直接退出 然后第二个 就是一个函数
这二个应该是让得到 cpu 还有操作系统的值 然后进行操作 两次md5 我就放弃了对他的操作得到 key 然后 就是 根据明文还有密文进行 爆破key 然后我的想法就是直接爆破 或许我的des 写的不是他要求的des 这个就很恶心了 没办法 只能慢慢跑了
3DES ECB pkcs7 这个是des 的版本。。。。 然后跑出来的key是 KEY:FFCDDABBBBCB 本来以为这样就结束了 但是分析后面的程序你会发现还有个图片
本来就一头雾水 这是什么鬼吗 这个图片是干嘛的 后来学长告诉我 而且png只有13个像素点
然后~~~~~~~~~~~~~~~~~~
emmm 然后就可以 对key 和像素的 异或
emmmm 反正这方面 我还是不是很了解。。。
下面直接放脚本算了///////////////////
f=open('test.png','rb').read()
print(len(f))
salt=[0x3c,0x91,0xf3,0xd7,0x17,0x65,0xfd,0x47,0x7,0xa,0x77,0xe8,0xc7,0x1a,0xc6,0xfd,0x80,0x3d,0xda,0xff,0xae,0x77,0xa7,0x65,0x1,0x5e,0xed,0xd6,0xc8,0x1e,0xc4,0xe1,0xc4,0xbe,0x85,0x5c,0x93,0x58,0x8,0xd7,0xb5,0xf8,0x2c,0x59,0x8d,0x33,0xb7,0xa0,0x3b,0xe0,0xf1,0xc7,0x97,0xdb,0xf8,0xf0,0x8,0xe9,0xc1,0xc,0x85,0x6c,0x3b,0xc0,0x57,0x67,0xcd,0x20,0x8b,0x7e,0xd8,0xda,0x28,0x12,0xe5,0xd1,0xa6,0xe,0x87,0x87,0xa5,0xba,0xf,0xc8,0x49,0xd6,0x50,0xcb,0x6b,0x33,0x1e,0x7c,0x50,0xd9,0xb4,0xb5,0x9,0x51,0x92,0x52,0x3d,0x33,0x5a,0x50,0xef,0x50,0x75,0xa0,0x5e,0x91,0x18]
for i in range(len(f)):
print(hex(f[i]^salt[i]),end=',')
a=[
0x3b,0x20,0x71,0x20,0x20,0x73,
0x74,0x71,0x21,0x21,0x71,0x74,
0x76,0x6b,0x74,0x73,0x76,0x23,
0x6f,0x20,0x27,0x76,0x77,0x6f,
0x7f,0x7e,0x25,0x20,0x69,0x23,
0x7a,0x20,0x20,0x20,0x27,0x76,
0x70,0x3d,0x24,0x25,0x28,0x27
]
b="FFCDDABBBBCB"
c=""
for i in range(len(a)):
c+=chr(a[i]^ord(b[i%12]))
print c[::-1]
# flag{64dbbb8b-df89-44eb-b277-062cc362dd2f}
难受啊 马飞
这道题绝对算是比较难的题了 不仅考验编程能力 还考验密码学知识 更坑的是 还考验我们。。。。。。经验
**********************************************************************************************************************************
重新认识这道题
先来爆破key
这个是爆破 的脚本
#!/usr/bin/env python3
# encoding=utf-8
import base64
import hashlib
import os
from Crypto.Cipher import DES3
import pyDes
import sys
key="key:FF"
l="ABCDEF"
text="Hint:The_key_is_the_key"
for ii in l:
for jj in l:
for kk in l:
for iii in l:
for jjj in l:
for kkk in l:
for iiii in l:
for jjjj in l:
for kkkk in l:
for pp in l:
text="Hint:The_key_is_the_key"
#key="KEY:FFCDDABBBBCB"
key="KEY:FF"
#print (str(ii)+str(jj)+chr(kk))
key+=ii+jj+kk
key+=iii+jjj+kkk
key+=iiii+jjjj+kkkk
key+=pp
for i in range(8):
key+=chr(0)
x = len(text) % 8
if x != 0:
text = text + chr(8-x) * (8 - x)
text = text.encode('utf-8')
key=key.encode('utf-8')
s=DES3.new(key, DES3.MODE_ECB)
ciphertext = s.encrypt(text)
#x = len(text) % 8
s=""
print(ciphertext)
for i in ciphertext:
s+=hex(i)[2:]
print("%s,decode:%s"%(key[:-8],s))
if s=='f43acddb566533cd32c8bf02ce1d54a8f11b532dad6a5':
print(key[:-8])
os.system("pause")
exit()
去rbg的python 脚本
#!/usr/bin/env python3
# encoding=utf-8
import base64
import hashlib
import os
from Crypto.Cipher import DES3
import pyDes
import sys
from PIL import Image
im = Image.open("flag.png")
pix = im.load()
width = im.size[0]
height = im.size[1]
l=[]
for x in range(width):
for y in range(height):
r, g, b = pix[x, y]
l.append(r)
l.append(g)
l.append(b)
#print(hex(r), hex(g), hex(b))
print(l)
然后异或一下
#!/usr/bin/env python3
# encoding=utf-8
import base64
import hashlib
import os
from Crypto.Cipher import DES3
import pyDes
import sys
from PIL import Image
im = Image.open("flag.png")
pix = im.load()
width = im.size[0]
height = im.size[1]
l=[]
for x in range(width):
for y in range(height):
r, g, b = pix[x, y]
l.append(r)
l.append(g)
l.append(b)
#print(hex(r), hex(g), hex(b))
print(l)
s="FFCDDABBBBCB"
flag=""
for i in range(len(l)):
flag+=chr(ord(s[i%len(s)])^(l[i]))
print (flag[::-1])
然后就搞定了