BUUCTF-reverse :刮开有奖

刮开有奖:

进入WinMain函数,发现就只有一行。点进DialogFunc函数,发现可以分为三部分,第一部分是有关sub_4010F0函数的,第二部分是有关sub_401000函数的,第三部分就是比较了。

先看sub_4010F0函数,点进去一看,发现是从小到大排序的算法,也就是说对v7[0],v7[1],v8,v9,v10,v11,v12,v13,v14,v15,v16这11个数进行从小到大排序(从下标0和10以及定义部分可以看出是这11个数)

然后第二部分,sub_401000函数,点进去一看(由于人菜,暂时还看不出base64的算法),发现有个byte_407830,点进去一看发现是base64的特征,于是可以大概知道sub_401000函数就是进行一次base64加密。

最后看第三部分,前4句可以看出可以由排序好后的v7[0],v10,v8,v13得出string[0、1、2、3],然后再对v4(ak1w),v5(V1Ax)分别进行一次base64解密,可以得到string[5、6、7]和string[2、3、4],顺便可以和前面得到的string[2、3]验证一下,发现完全符合。

然后再由前面的if(strlen(string)==8)可以得出string有8位。

最终得到结果(string部分的也就是{}里面的内容)是UJWP1jMp。

最后再加上flag{},得到结果        flag{UJWP1jMp}        

posted on 2022-07-16 18:01  Viegoo  阅读(142)  评论(0编辑  收藏  举报