您现在的位置是:主页 > news > 可以做宣传海报的网站/2345中国最好的网址站
可以做宣传海报的网站/2345中国最好的网址站
admin2025/6/4 13:18:21【news】
简介可以做宣传海报的网站,2345中国最好的网址站,泰塔科技网站建设,icp备案网站接入信息ip地址段cracking_game 载入IDA Shift f12 双击Bingo!.... 双击通过Xref查找引用Bingo处(sub_4E0) 接着按下空格 切换成文本模式 那个应该是堆栈不平衡吧,我修改了下堆栈值就能f5 ida咋改堆栈值 代码向上翻 分析可知sub_4E0就是关键 但是发现…
可以做宣传海报的网站,2345中国最好的网址站,泰塔科技网站建设,icp备案网站接入信息ip地址段cracking_game 载入IDA
Shift f12 双击Bingo!.... 双击通过Xref查找引用Bingo处(sub_4E0) 接着按下空格 切换成文本模式 那个应该是堆栈不平衡吧,我修改了下堆栈值就能f5 ida咋改堆栈值 代码向上翻 分析可知sub_4E0就是关键 但是发现…
cracking_game
载入IDA
Shift + f12 双击Bingo!....
双击通过Xref查找引用Bingo处(sub_4E0)
接着按下空格 切换成文本模式
那个应该是堆栈不平衡吧,我修改了下堆栈值就能f5
ida咋改堆栈值
代码向上翻 分析可知sub_4E0就是关键 但是发现不可以使用F5
Option àGeneralà勾选上Stack pointer
然后就可以看到多了一列绿色的
然后alt+k可以修改
原来数值是0x2C 改为0x0就可以
int __cdecl sub_4E0(int a1){int v1; // ST18_4int v2; // ST1C_4int v3; // ST20_4int v4; // ST24_4int v5; // ST28_4int v6; // ST2C_4int result; // eaxint v8; // [esp-10h] [ebp-3Ch]int v9; // [esp-Ch] [ebp-38h]int v10; // [esp-Ch] [ebp-38h]int v11; // [esp-8h] [ebp-34h]int v12; // [esp-8h] [ebp-34h]int v13; // [esp-4h] [ebp-30h]int v14; // [esp-4h] [ebp-30h]int v15; // [esp+0h] [ebp-2Ch]int v16; // [esp+4h] [ebp-28h]int v17; // [esp+8h] [ebp-24h]int v18; // [esp+Ch] [ebp-20h]unsigned int v19; // [esp+10h] [ebp-1Ch]int *v20; // [esp+20h] [ebp-Ch]v20 = &a1;v19 = __readgsdword(0x14u);__printf_chk(1, &unk_A50, aCanYouSolveThi, v8, v9, v11, v13, v15, v16, v17, v18);__printf_chk(1, "Give me the flag please: ", v1, v2, v3, v4, v5, v6, v16, v17, v18);__isoc99_scanf("%x %x %x", &v16, &v17, &v18);if ( (((((((((((((((((((v17 + 1514584764) ^ 0x58E7773A) - 907520011) ^ 0x74A4134B) + 1299160922) ^ 0x2A3457E6)+ 1267464377) ^ 0xBB5D6AFF)+ 1051920565) ^ 0x3C5A9BE1)- 1324494254) ^ 0x9D91B40F)- 1113157154) ^ 0x5D8ACD6E)+ 1467566340) ^ 0x481EE77)- 754063826) ^ 0x5702EC35)+ 1739736031) ^ 0x80CAFC7B | ((((((((((((((((((v18 ^ 0x63074EB7) - 257813895) ^ 0x3D898713) - 515561400) ^ 0xD4A1204D)- 309222932) ^ 0xDB034E6B)- 1757999315) ^ 0x85AEAF52)+ 551686536) ^ 0xCDC4D471)+ 1687331817) ^ 0x5BF4CECF)+ 686778677) ^ 0x97C13118)- 1982126587) ^ 0x5B589A)+ 1689812494) ^ 0xDF2FFB19 | (((((v16 + 929931831) ^ 0x5039B3AD) + 427557174) ^ 0x1363F241)- 1960340062) )puts("Hmm...");else__printf_chk(1,"Bingo! The flag is flag{subflag0:subflag1:subflag2}`n",(((((((((((((((((((v17 + 1514584764) ^ 0x58E7773A) - 907520011) ^ 0x74A4134B) + 1299160922) ^ 0x2A3457E6)+ 1267464377) ^ 0xBB5D6AFF)+ 1051920565) ^ 0x3C5A9BE1)- 1324494254) ^ 0x9D91B40F)- 1113157154) ^ 0x5D8ACD6E)+ 1467566340) ^ 0x481EE77)- 754063826) ^ 0x5702EC35)+ 1739736031) ^ 0x80CAFC7B,(((((((((((((((((((v17 + 1514584764) ^ 0x58E7773A) - 907520011) ^ 0x74A4134B) + 1299160922) ^ 0x2A3457E6)+ 1267464377) ^ 0xBB5D6AFF)+ 1051920565) ^ 0x3C5A9BE1)- 1324494254) ^ 0x9D91B40F)- 1113157154) ^ 0x5D8ACD6E)+ 1467566340) ^ 0x481EE77)- 754063826) ^ 0x5702EC35)+ 1739736031) ^ 0x80CAFC7B,v10,v12,v14,((((((((((((((((((v17 + 1514584764) ^ 0x58E7773A) - 907520011) ^ 0x74A4134B) + 1299160922) ^ 0x2A3457E6)+ 1267464377) ^ 0xBB5D6AFF)+ 1051920565) ^ 0x3C5A9BE1)- 1324494254) ^ 0x9D91B40F)- 1113157154) ^ 0x5D8ACD6E)+ 1467566340) ^ 0x481EE77)- 754063826) ^ 0x5702EC35)+ 1739736031,v16,v17,v18);result = 0;if ( __readgsdword(0x14u) != v19 )sub_A20();return result;}
很明显,程序对输入的三个数,进行一系列的加减和异或
要使得if中条件都为0。结果才为flag。
只需要重新修改代码,将操作反向,计算一遍就可以了
计算代码:
int v0 = ((((((((((((((((((((0 ^ 0x80CAFC7B) - 1739736031) ^0x5702EC35) + 754063826) ^ 0x481EE77 )- 1467566340) ^ 0x5D8ACD6E)+1113157154) ^ 0x9D91B40F)+1324494254) ^ 0x3C5A9BE1)-1051920565) ^ 0xBB5D6AFF)-1267464377) ^ 0x2A3457E6)-1299160922) ^ 0x74A4134B) +907520011) ^ 0x58E7773A)-1514584764);int v1 = (((((((((((((((((((0 ^ 0xDF2FFB19) -1689812494) ^ 0x5B589A)+1982126587) ^ 0x97C13118)-686778677) ^ 0x5BF4CECF)-1687331817) ^ 0xCDC4D471)-551686536) ^ 0x85AEAF52)+1757999315) ^ 0xDB034E6B)+309222932) ^ 0xD4A1204D)+515561400) ^ 0x3D898713) +257813895) ^ 0x63074EB7);int v2 = (((((0 + 1960340062) ^ 0x1363F241)- 427557174) ^ 0x5039B3AD)- 929931831);if ( (((((((((((((((((((v0 + 1514584764) ^ 0x58E7773A) - 907520011) ^ 0x74A4134B) + 1299160922) ^ 0x2A3457E6) + 1267464377) ^ 0xBB5D6AFF) + 1051920565) ^ 0x3C5A9BE1) - 1324494254) ^ 0x9D91B40F) - 1113157154) ^ 0x5D8ACD6E) + 1467566340) ^ 0x481EE77) - 754063826) ^ 0x5702EC35) + 1739736031) ^ 0x80CAFC7B | ((((((((((((((((((v1 ^ 0x63074EB7) - 257813895) ^ 0x3D898713) - 515561400) ^ 0xD4A1204D) - 309222932) ^ 0xDB034E6B) - 1757999315) ^ 0x85AEAF52) + 551686536) ^ 0xCDC4D471) + 1687331817) ^ 0x5BF4CECF) + 686778677) ^ 0x97C13118) - 1982126587) ^ 0x5B589A) + 1689812494) ^ 0xDF2FFB19 | (((((v2 + 929931831) ^ 0x5039B3AD) + 427557174) ^ 0x1363F241) - 1960340062) ){ printf("%x", v0);printf("%x", v1);printf("%x", v2); }
根据v0,v1,v2的输入顺序进行排序
最后得到:
flag{e698830d:8dd70651:c1ecd292}