-
-
[原创]第六题 Repwn Writeup
-
发表于: 2019-3-20 16:38 3139
-
载入IDA,Shift + F12 查找关键字符串
双击进入关键函数,
分析后知,sub_4012f0为第一步的验证函数,跟进
经过分析知,flag的下标从8到20为X1Y0uN3tG00d
跟进sub_401460函数,
分析易知,输入字符长度为24,但是没有前8位的信息,进一步分析,进入sub_4013B0函数,
发现,函数中出现8个连续的全局变量运算,猜测input的前8位应该赋值给了全局变量,进入sub_401380验证
很明显的atoi函数,则结合对sub_4013B0函数分析,发现是对前8位的输入进行了限制,根据函数写脚本
得到输入前8位为20101001
继续,进一步分析,发现无论怎么找,都无法找到对输入最后四位的验证,而只有对后续四位的减法运算
进一步考虑溢出的问题,发现最后的strcpy函数将我们的输入拷贝到局部变量dest中,而就是input的最后四字节造成函数返回地址被覆盖,
于是,寻找合适的返回地址,后续发现一个很可疑的函数sub_401BF0,构造最后四个字符,使函数执行完后,返回到0x401bf0,考虑到小端序的问题,并且字节溢出高位舍去的问题
运行发现出现新窗口
最终得到flag的最后四位为HaCk
分析后续函数sub_401BF0
发现有个很奇怪的strcpy,继续跟进函数sub_401730和sub_4018b0,发现其中有几个很明显的已知加密函数特征,使用PEiD的插件查询是否有已知加密函数
查看地址0x401893,验证成功,那么上述strcpy的字符串,应该就是des的密钥,继续分析函数,在最终sub_4018B0中进行了比较
最终得到密文应为9db084ac97041e305697d5a499355a28
解密得
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课