-
-
[原创]2019看雪CTF晋级赛Q1-第五题writeup
-
发表于: 2019-3-17 01:35 3260
-
题目描述为考查密码学知识,猜测题目可能包含一些密码算法。用PEiD的插件Krypto ANALyzer扫描程序,结果没发现有什么加密算法。
程序为典型的Win32 GUI程序,程序创建了一个对话框,通过对话框的消息处理函数可以定位到关键函数的地址为0x402652。
根据后面的判断v38必须为0,可以得到输入的长度必须大于等于12,且第0位和第1位不能同时为A,第5位和第11位必须同时为V,输入必须为可见字符。
程序先将输入的第5位和第11位给去除了,然后和进行了base64解码(表被替换了)再编码的结果进行比较,如果相等才会进入4024e1这个函数,而402A90这个函数是解密输出的字符串用的,通过调试,可以得到v7必须为2,才会有如下所示提示弹出。
函数4024e1的参数是base64解码后的数据。
通过动态调试发现,程序中有如下大数结构
struct bignum{
int flag;(标识正负,1为正)
int length;
int data[length];
}
函数401485的作用是比较2个大数的大小,函数4020F1是求A的B次方模C。
故函数4024E1的作用就是求base64解码后的数据的83次方然后模0x41CD66ACC237B22681A18067
因此最后问题化简为了x**83mod0x41CD66ACC237B22681A18067=2,求x的值。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: