-
-
[原创]看雪.京东 2018CTF-第二题分析
-
发表于: 2018-6-19 16:26 2851
-
key_19_20_21Buf
key_16_17_18Buf
key_7_8Buf
key_2_3buf
key_4_5_6Buf
key_9_10_11_12Buf
key_0_1Buf
key13_14_15Buf
inputkey[0]=‘c’
inputkey[1]='7’
inputkey[2]=?
inputkey[3]=?
inputkey[4]=?
inputkey[5]=?
inputkey[6]=?
inputkey[7]=?
inputkey[8]=?
inputkey[9]='c'
inputkey[10]='7'
inputkey[11]='M'
inputkey[12]='k'
inputkey[13]=?
inputkey[14]=?
inputkey[15]=?
inputkey[16]=?
inputkey[17]=?
inputkey[18]=?
inputkey[19=?
inputkey[20]=?
inputkey[21]=?
inputkey[0]=‘c’
inputkey[1]='7'
inputkey[2]=?
inputkey[3]=?
inputkey[4]=?
inputkey[5]=?
inputkey[6]=?
inputkey[7]=‘k’
inputkey[8]='x'
inputkey[9]='c'
inputkey[10]='7'
inputkey[11]='M'
inputkey[12]='k'
inputkey[13]=?
inputkey[14]=?
inputkey[15]=?
inputkey[16]=?
inputkey[17]=?
inputkey[18]=?
inputkey[19=?
inputkey[20]=?
inputkey[21]=?
inputkey[0]=‘c’
inputkey[1]='7'
inputkey[2]=?
inputkey[3]=?
inputkey[4]=?
inputkey[5]=?
inputkey[6]=?
inputkey[7]=‘k’
inputkey[8]='x'
inputkey[9]='c'
inputkey[10]='7'
inputkey[11]='M'
inputkey[12]='k'
inputkey[13]=‘c’
inputkey[14]='t'
inputkey[15]='f'
inputkey[16]=?
inputkey[17]=?
inputkey[18]=?
inputkey[19=?
inputkey[20]=?
inputkey[21]=?
inputkey[0]=‘c’
inputkey[1]='7'
inputkey[2]=?
inputkey[3]=?
inputkey[4]=?
inputkey[5]=?
inputkey[6]=?
inputkey[7]=‘k’
inputkey[8]='x'
inputkey[9]='c'
inputkey[10]='7'
inputkey[11]='M'
inputkey[12]='k'
inputkey[13]=‘c’
inputkey[14]='t'
inputkey[15]='f'
inputkey[16]=‘c’
inputkey[17]='t'
inputkey[18]='9'
inputkey[19=?
inputkey[20]=?
inputkey[21]=?
key_2_3buf
key_4_5_6Buf
key_19_20_21Buf
而原始树中还差 ct 以及2个c7M没有分配,因此可知:
key_2_3buf 必须是"ct"
key_4_5_6Buf 与
key_19_20_21Buf 相同,是“c7M” 因此key如下:
inputkey[0]=‘c’
inputkey[1]='7'
inputkey[2]='c'
inputkey[3]='t'
inputkey[4]='c'
inputkey[5]='7'
inputkey[6]='M'
inputkey[7]=‘k’
inputkey[8]='x'
inputkey[9]='c'
inputkey[10]='7'
inputkey[11]='M'
inputkey[12]='k'
inputkey[13]=‘c’
inputkey[14]='t'
inputkey[15]='f'
inputkey[16]=‘c’
inputkey[17]='t'
inputkey[18]='9'
inputkey[19='c'
inputkey[20]='7'
inputkey[21]='M'
int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax char key[32]; // [esp+10h] [ebp-44h] char* successBuf; // [esp+30h] [ebp-24h] int v6; // [esp+34h] [ebp-20h] int v7; // [esp+38h] [ebp-1Ch] int v8; // [esp+3Ch] [ebp-18h] char* wrongBuf; // [esp+40h] [ebp-14h] int v10; // [esp+44h] [ebp-10h] int v11; // [esp+48h] [ebp-Ch] int v12; // [esp+4Ch] [ebp-8h] //得到输入用于验证的key GetInputKey("%s", key, 32); //初始化key正确字符串 SetSuccessString(&successBuf); //初始化key错误字符串 SetWrongString(&wrongBuf); //判断输入的key的字符是否是大小写字母和数字 if ( ifCharOrDigit(key, (int)&wrongBuf) ) { //输入的key所有字符都是大小写字母或数字,判断输入key长度是否是22, if ( &key[strlen(key) + 1] - &key[1] == 22 ) { //输入的key长度是22,则调用KeyCmp函数进一步判断 KeyCmp(key, (char *)&successBuf, (char *)&wrongBuf); } else { //输入的key长度不是22,直接输入错误 outputString(&wrongBuf); } wrongBuf = 0; v10 = 0; v11 = 0; v12 = 0; successBuf = 0; v6 = 0; v7 = 0; v8 = 0; system("pause"); result = 0; } else { //输入的key存在不是大小写字母和数字的情况,非法,直接返回 successBuf = 0; v6 = 0; v7 = 0; v8 = 0; wrongBuf = 0; v10 = 0; v11 = 0; v12 = 0; result = 0; } return result; }
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- 看雪CTF 2019总决赛 第六题 三道八佛 IDA脱壳脚本 5670
- [原创]看雪CTF2019Q3第四题WP 5935
- [原创]看雪CTF2019Q3 第二题WP 6762
- [2019看雪CTF晋级赛Q3第九题WP 12492
- [原创]看雪CTF2019晋级赛Q2第三题 5022