美文网首页
三道不同平台的Reverse题目带你入逆向坑

三道不同平台的Reverse题目带你入逆向坑

作者: 蚁景科技 | 来源:发表于2018-09-04 13:27 被阅读105次

    本文为原创文章,转载请注明出处!


    第一道(APK)

    Re100

    下载下来发现没有后缀,IDA载入  发现是apk文件

    直接载入jeb分析 找到关键代码  右键反编译这个类(或者可以按快捷键Tab)

    先判断我们输入的字符串(记作input)长度是否小于5  若成立  则输出“tryagain!”

    不成立的话将input进行逆序 然后md5加密接着进行base64编码最后与

    “NzU2ZDJmYzg0ZDA3YTM1NmM4ZjY4ZjcxZmU3NmUxODk=“

    进行比较 若相同 则输入正确

    得到}321nimda{galflj,逆序一次得到jlflag{admin123}

    第二道(PE文件)

    ransomware

    0x01:

    PEiD查壳无壳运行之后也没中毒 无毒

    0x02:

    运行一下看看 可用的只有一个输入框和一个按钮(Decrypt),这里可以通过Restorator进行分析

    随意输入123456789  点击Decrypt   弹出对话框,看到关键点  

    一个是触发的MessageBox  (通过下API断点)

    一个是关键字符串 Wrong,The password is error

    两种方法都可以定位到关键代码 (通过搜索ASCII字符串),下边采用API断点进行定位

    0x03

    先载入Olydbg分析一波,右键任意空白处或者直接(Ctrl+ N)

    或者在命令栏中输入bpGetDlgItemTextA,bp MessageBoxA

    下好断点之后,直接F9运行,随意输入12456789,程序会中断到这里

    选中堆栈窗口buffer这一行  右键数据窗口中跟随

    接着调试执行到返回(快捷键Ctrl+ F9)

    这时可以看到数据窗口出现了我们的input123456789

    接着F7 然后F8单步向下分析即可

    具体分析结果:

    1.程序先判断我们的输入是否等于18

    2.关键代码就是地址00AE12A3 这个call

    OD分析不方便叙述,还是用IDA吧

    0x04

    可以直接shift+F12找关键字符串,也可以像下边这样

    双击DialogBoxFunc

    接着F5进行分析

    所以我们只需byte_404000[]提取出来 与0xCC进行异或就可以得到flag

    有一个简单的办法 就是选中所有数据   shift + E  即可

    提取出的直接是C代码

    最后得到flag{1_dO_n0t_wAnna_cry}

    第三道(ELF文件)

    cracking_game载入IDA,Shift + f12 双击Bingo!....

    双击通过Xref查找引用Bingo处(sub_4E0)

    接着按下空格切换成文本模式

    代码向上翻 分析可知sub_4E0就是关键但是发现不可以使用F5

    OptionàGeneralà,勾选上Stackpointer,然后就可以看到多了一列绿色的

    然后alt+k可以修改

    原来数值是0x2C改为0x0就可以

    int__cdecl sub_4E0(inta1)

    {

    intv1;//ST18_4

    intv2;//ST1C_4

    intv3;//ST20_4

    intv4;//ST24_4

    intv5;//ST28_4

    intv6;//ST2C_4

    intresult;//eax

    intv8;//[esp-10h] [ebp-3Ch]

    intv9;//[esp-Ch] [ebp-38h]

    intv10;//[esp-Ch] [ebp-38h]

    intv11;//[esp-8h] [ebp-34h]

    intv12;//[esp-8h] [ebp-34h]

    intv13;//[esp-4h] [ebp-30h]

    intv14;//[esp-4h] [ebp-30h]

    intv15;//[esp+0h] [ebp-2Ch]

    intv16;//[esp+4h] [ebp-28h]

    intv17;//[esp+8h] [ebp-24h]

    intv18;//[esp+Ch] [ebp-20h]

    unsignedintv19;//[esp+10h] [ebp-1Ch]

    int*v20;//[esp+20h] [ebp-Ch]

    v20=&a1;

    v19=__readgsdword(0x14u);

    __printf_chk(1,&unk_A50,aCanYouSolveThi,v8,v9,v11,v13,v15,v16,v17,v18);

    __printf_chk(1,"Giveme the flag please: ",v1,v2,v3,v4,v5,v6,v16,v17,v18);

    __isoc99_scanf("%x%x %x",&v16,&v17,&v18);

    if((((((((((((((((((((v17+1514584764)^0x58E7773A)-907520011)^0x74A4134B)+1299160922)^0x2A3457E6)

    +1267464377)^0xBB5D6AFF)

    +1051920565)^0x3C5A9BE1)

    -1324494254)^0x9D91B40F)

    -1113157154)^0x5D8ACD6E)

    +1467566340)^0x481EE77)

    -754063826)^0x5702EC35)

    +1739736031)^0x80CAFC7B|((((((((((((((((((v18^0x63074EB7)-257813895)^0x3D898713)-515561400)^0xD4A1204D)

    -309222932)^0xDB034E6B)

    -1757999315)^0x85AEAF52)

    +551686536)^0xCDC4D471)

    +1687331817)^0x5BF4CECF)

    +686778677)^0x97C13118)

    -1982126587)^0x5B589A)

    +1689812494)^0xDF2FFB19|(((((v16+929931831)^0x5039B3AD)+427557174)^0x1363F241)

     -1960340062))

    puts("Hmm...");

    else

    __printf_chk(

    1,

    "Bingo!The flag is flag{subflag0:subflag1:subflag2}`n",

    (((((((((((((((((((v17+1514584764)^0x58E7773A)-907520011)^0x74A4134B)+1299160922)^0x2A3457E6)

     +1267464377)^0xBB5D6AFF)

     +1051920565)^0x3C5A9BE1)

     -1324494254)^0x9D91B40F)

     -1113157154)^0x5D8ACD6E)

     +1467566340)^0x481EE77)

     -754063826)^0x5702EC35)

     +1739736031)^0x80CAFC7B,

    (((((((((((((((((((v17+1514584764)^0x58E7773A)-907520011)^0x74A4134B)+1299160922)^0x2A3457E6)

     +1267464377)^0xBB5D6AFF)

     +1051920565)^0x3C5A9BE1)

     -1324494254)^0x9D91B40F)

     -1113157154)^0x5D8ACD6E)

     +1467566340)^0x481EE77)

     -754063826)^0x5702EC35)

     +1739736031)^0x80CAFC7B,

    v10,

    v12,

    v14,

    ((((((((((((((((((v17+1514584764)^0x58E7773A)-907520011)^0x74A4134B)+1299160922)^0x2A3457E6)

    +1267464377)^0xBB5D6AFF)

    +1051920565)^0x3C5A9BE1)

    -1324494254)^0x9D91B40F)

    -1113157154)^0x5D8ACD6E)

    +1467566340)^0x481EE77)

    -754063826)^0x5702EC35)

    +1739736031,

    v16,

    v17,

    v18);

    result=0;

    if(__readgsdword(0x14u)!=v19 )

    sub_A20();

    returnresult;

    }

    很明显,程序对输入的三个数,进行一系列的加减和异或,那么我们只需要将+换成- 逆向操作就好了

    计算代码:

    intv0 =((((((((((((((((((((0^0x80CAFC7B)-1739736031) ^0x5702EC35)+754063826)^0x481EE77)-1467566340)^0x5D8ACD6E)+1113157154)^0x9D91B40F)+1324494254)^0x3C5A9BE1)-1051920565)^0xBB5D6AFF)-1267464377)^0x2A3457E6)-1299160922)^0x74A4134B)+907520011)^0x58E7773A)-1514584764);

    intv1 =(((((((((((((((((((0^0xDF2FFB19)-1689812494)^0x5B589A)+1982126587)^0x97C13118)-686778677)^0x5BF4CECF)-1687331817)^0xCDC4D471)-551686536)^0x85AEAF52)+1757999315)^0xDB034E6B)+309222932)^0xD4A1204D)+515561400)^0x3D898713)+257813895)^0x63074EB7);

    intv2 =(((((0+1960340062)^0x1363F241)-427557174)^0x5039B3AD)-929931831);

    if((((((((((((((((((((v0+1514584764)^0x58E7773A)-907520011)^0x74A4134B)+1299160922)^0x2A3457E6)  +1267464377)^0xBB5D6AFF)  +1051920565)^0x3C5A9BE1) -1324494254)^0x9D91B40F)  -1113157154)^0x5D8ACD6E)  +1467566340)^0x481EE77) -754063826)^0x5702EC35)  +1739736031)^0x80CAFC7B|((((((((((((((((((v1^0x63074EB7)-257813895)^0x3D898713)-515561400)^0xD4A1204D)  -309222932)^0xDB034E6B)  -1757999315)^0x85AEAF52)  +551686536)^0xCDC4D471)  +1687331817)^0x5BF4CECF) +686778677)^0x97C13118)  -1982126587)^0x5B589A) +1689812494)^0xDF2FFB19|(((((v2+929931831)^0x5039B3AD)+427557174)^0x1363F241)  -1960340062))

    { 

    printf("%x",v0);

    printf("%x",v1);

    printf("%x",v2);

    }

    根据v0,v1,v2的输入顺序进行排序最后得到:

    flag{e698830d:8dd70651:c1ecd292}

    题目下载链接:

    第一道:

    https://pan.baidu.com/s/1bPZnjEXFODiZEAmegjYcPg密码: 9yjv

    第二道:

    https://pan.baidu.com/s/1Qy_uL1H9LvChcFejAkGmlA密码: ti5n

    第三道:

    https://pan.baidu.com/s/1mBlcZ5AwQ9GiIsmbbn3c5w密码: 2mu4

    课程推荐时间(via合天网安实验室)

    1、逆向工具大全

    http://www.hetianlab.com/cour.do?w=1&c=C9d6c0ca797abec2016080315291800001

    2、逆向游乐园

    http://www.hetianlab.com/cour.do?w=1&c=C9d6c0ca797abec2016080315412500001




    文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明。

    相关文章

      网友评论

          本文标题:三道不同平台的Reverse题目带你入逆向坑

          本文链接:https://www.haomeiwen.com/subject/tucgwftx.html