(十九)、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}

题毕

五、总结

对于这两个检查函数,没有解题思路,不妨先写出几个满足条件的例子,看这些例子满足什么规律(这种函数很奇怪的程序一般都会遵循一种规律),找到这个规律,才是解题的关键

 

posted @ 2022-02-14 22:43  TLSN  阅读(37)  评论(0)    收藏  举报