SafeBox(NJCTF)

这个题  其实还是挺简单的 

但是吧。。。。。。。。。  比较可惜的一点就是   最近脑子不太对

看 pwn 看的头晕  然后课还是比较多  然后 比较可惜的是  心情也不太好吧 

然后在 看雪论坛上 看到了一个病毒样本 准备 有空去 分析一波   

好久没有 逆向过什么东西 所以 看了一个安卓的逆向题 看了看 玩了一下  感觉有点意思 就写了下来

这个题 有意思 就有意思在 一开始我并不知道这个题的真正入口点在哪 

对着这个算法搞半天 发现 答案不对  然后看了一下so文件 发现也没有错  感觉有点搞

后来发现是 这里 才是 我晕。

直接 扣下来  逆向一下算法就ok了

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
    int k;
    int i;
    int n;
    int j;
    int i1;
    for(i1=10000000; i1<99999999; i1++)
    {
            k = 1;
            i = 10000000;
            n = 1;
            if ((abs(i1 / 1000 % 100 - 36) == 3) && (i1 % 1000 % 584 == 0))
            {
                j = 0;
            }
            else
                continue;
        for (;;)
        {
            int m = n;
            if (j < 3)
            {
                if (i1 / k % 10 != i1 / i % 10)
                {
                    break;
                    m = 0;
                }
            }
            else
            {
                if (m == 1)
                {
                    printf("%d\n",i1);
                    char c1 = (char)(i1 / 1000000);
                    char c2 = (char)(i1 / 10000 % 100);
                    char c3 = (char)(i1 / 100 % 100 + 10);
                    printf("NJCTF{have%c%c%cf4n}\n",c1,c2,c3);
                }
                break;
            }
            k *= 10;
            i /= 10;
            j += 1;
        }



    }
    return 0;
}

 

这里 有两个flag  第一个是正确的 。。第二个不知道正不正确。。 按正常思维就是 只会有一个答案是正确的 所以第二个应该是 有问题的

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值