看雪CTF2017学习记录整理系列1
最近参与玩了看雪论坛今年举办的CTF2017,受益良多,特此记录整理。
第一题 WannaLOL(签到题)
运行程序:
IDA,通过导入表定位输入:
或者字符串定位输出:
然后直接到达验证代码:
可以看到有花指令,会干扰IDA创建该验证函数,导致不能F5看伪代码,可以将其patch掉:
然后在该验证代码开头位置(函数特征识别)右键,点击创建函数:
成功创建了一个验证子函数:
此时可以成功F5反编译伪代码:
分析出以上验证流程就很清晰了,可以确定输入key是4位数字,满足计算结果为一个浮点数384.0即可。这题原本是有多解,后来又加上了如上的排除条件。最后根据计算过程,实际上等价于(v0-v1) * buf == 24
,其中buf为第4位数字,v0为第3位数字,v1为第1位数字除以5,注意这里5为IDA自动识别了第2位数字,实际上第1位数字前面验证条件也固定为了1,所以v1实际上等于0.2。因此得到一个二元方程:(i2-0.2) * i3 = 24,唯一整数解为:i2=i3=5,即key为1555。而其实如果将输入字符集包括大小写字母,穷举还能得到另一组key:151N。穷举脚本这里就不写了,比较简单,可以根据算法用python跑,也可以写调试器脚本自动穷举。
目前没有反馈
表单载入中...