-
-
[原创]KCTF2022 春季赛 签到提 险象环生 writeup
-
发表于: 2022-5-16 23:05 3269
-
观察函数调用,发现是SMC
段落引用 防守方在发布CrackMe时,应向大众公开一组用户名和序列号,即 “ Name/Serial ” ,其中公开的这个用户名“Name“,必须是该CrackMe文件的 hash值。hash算法指定为SHA256,用户名为hash结果的前64bit的16进制大写文字。
公开用户名及序列号.txt 包含了公开的一组用户名及其对应的序列号
公开的用户及序列号:
用户名 : 461D7AD538F179EE
序列号 : 40403286341212
题目给了一组公开的序列号和用户名 在经过smc_decrypto过后F5观察程序逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | strcpy(v14, "www.pediy.com" ); Destination = 0 ; v16 = 0 ; v17 = 0 ; v18 = 0 ; v19 = 0 ; v20 = 0 ; v21 = 0 ; strcpy(v11, "23456781ABCDEFGHJKLMNPQRSTUVWXYZ" ); DlgItemTextA = GetDlgItemTextA(hDlg, 1001 , String, 201 ); v6 = GetDlgItemTextA(hDlg, 1000 , v10, 201 ); if ( DlgItemTextA > 14 || v6 = = 0 ) { SetDlgItemTextA(hDlg, 1001 , "Wrong Serial!" ); hWnd = GetDlgItem(hDlg, 1014 ); EnableWindow(hWnd, 0 ); return 0 ; } else { v12[ 0 ] = * (_DWORD * )&String[ 10 ]; v3 = sub_4034AD( 3 , ( int )v12); if ( dword_413000 ) sub_4017E0(&loc_4015D2, &loc_401767 - &loc_4015D2, v3); ms_exc.registration.TryLevel = 0 ; Value = sub_401260(v10, v6); strncpy(&Destination, String, DlgItemTextA - 4 ); _ultoa(Value, Buffer , 10 ); dword_413000 = 0 ; v4 = strcmp( Buffer , &Destination); if ( v4 ) v4 = v4 < 0 ? - 1 : 1 ; if ( v4 ) SetDlgItemTextA(hDlg, 1001 , "Wrong Serial!" ); else SetDlgItemTextA(hDlg, 1001 , "Success!" ); hWnda = GetDlgItem(hDlg, 1014 ); EnableWindow(hWnda, 0 ); ms_exc.registration.TryLevel = - 2 ; return 0 ; } } |
serial的后四位固定1212为xor key为smc提供解密
可以看到存在CRC32
sub_401260就是对name 进行了crc32校验
结尾补上1212
最终用户名KCTF
serial number:15920863481212
最终获得正确flag
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: