-
-
[看雪CTF2016]第二十题分析
-
发表于: 2016-12-10 15:32 2467
-
sn长度为10
成功条件flag >= 0
函数数组
fn_array_412250+20开始的4个函数都是用来验证sn的, 只有一个函数能成功(好像只有初始化部分有差别)
设置flag, 成功时index=4
用sn来初始化数组DWORD k[11][11], 只有斜线部分跟sn有关
验证方法: 每行的和都相等==第4列的和==斜线部分
最后一行k[11]跟sn没有关系, 计算该行的和, 直接可以算出每行的sn
.text:004021A1 cmp eax, 0Ah
成功条件flag >= 0
.data:00412280 g_flag .text:004021C4 jns short loc_4021E4
函数数组
.text:00402024 mov fn_array_412250, offset new_thread_flag_dec_20 .text:0040202E mov fn_array_412250+4, offset new_thread_flag_set_0 .text:00402038 mov fn_array_412250+8, offset new_thread_flag_set_minus_3 .text:00402042 mov fn_array_412250+0Ch, offset new_thread_flag_dec_2 .text:0040204C mov fn_array_412250+10h, offset new_thread_flag_ok .text:00402056 mov fn_array_412250+14h, offset new_thread_flag_dec_3 .text:00402060 mov fn_array_412250+18h, offset new_thread_flag_set_minus_3 .text:0040206A mov fn_array_412250+1Ch, offset new_thread_flag_set_minus_1 .text:00402074 mov fn_array_412250+20h, offset sub_4011E0 .text:0040207E mov fn_array_412250+24h, offset ok_401500 .text:00402088 mov fn_array_412250+28h, offset sub_401820 .text:00402092 mov fn_array_412250+2Ch, offset sub_401B40
fn_array_412250+20开始的4个函数都是用来验证sn的, 只有一个函数能成功(好像只有初始化部分有差别)
.text:00401F36 int 3 .text:00401F73 mov ecx, [ebp+var_20] .text:00401F76 mov edx, (fn_array_412250+20h)[ecx*4] .text:00401F7D call edx
设置flag, 成功时index=4
.text:004017F4 mov eax, [ebp+index] .text:004017F7 mov ecx, fn_array_412250[eax*4] .text:004017FE push 0 .text:00401800 call ecx ; fn_array_412250
用sn来初始化数组DWORD k[11][11], 只有斜线部分跟sn有关
验证方法: 每行的和都相等==第4列的和==斜线部分
最后一行k[11]跟sn没有关系, 计算该行的和, 直接可以算出每行的sn
.text:00401500 ok_401500
赞赏
他的文章
- KCTF2022春季赛 第三题 石像病毒 9194
- KCTF2022春季赛 第二题 末日邀请 16536
- KCTF2021秋季赛 第二题 迷失丛林 19290
- KCTF2020秋季赛 第十题 终焉之战 9294
- KCTF2020秋季赛 第九题 命悬一线 6789
赞赏
雪币:
留言: