(十九)、notsequence
攻防世界第28题
 
IDA静态分析+杨辉三角+MD5加密
一、查壳
 
32位elf文件,无壳
二、 IDA静态分析
IDA载入
1、 搜索字符串
定位到了main函数
 
2、 两个检查函数
先看第一个
 
总体意思就像这样
 
看完第一个检查函数,毫无头绪
再看第二个检查函数
 
我写几条满足条件的例子
 
发现有点蹊跷,有点像杨辉三角,但我不是很确定,
于是我写了一个杨辉三角的程序做对比,发现,刚好a[189] == a[209]
A[208] == a[170] + a[188]
而且,满足第一条检查函数
 
3、解题思路
杨辉三角无疑了,程序的输入应该就是杨辉三角的前210项,flag应该就是前210项的md5值
三、解密脚本
解密脚本其实就是这个输出杨辉三角的程序
#include<stdio.h> int main() { int arr[101] = {0}; int n; int a = 0,b = 0; printf("请输入杨辉三角的行数(1~100):\n"); scanf("%d",&n); arr[0] = 1; for(int i = 0;i<n;i++) { for(int j = i;j>=0;j--) { if(j == 0) arr[j] = 1; else arr[j] = arr[j] + arr[j-1]; } for(int j = 0;j<=i;j++) { printf("%-6d",arr[j]); } printf("\n"); } }
四、拿到flag
复制前210项后,用工具直接得到其md5值,不要忘记去空格并转小写
 
Flag就是:
RCTF{37894beff1c632010dd6d524aa9604db}
题毕
五、总结
对于这两个检查函数,没有解题思路,不妨先写出几个满足条件的例子,看这些例子满足什么规律(这种函数很奇怪的程序一般都会遵循一种规律),找到这个规律,才是解题的关键

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号