zoukankan      html  css  js  c++  java
  • ZCTF-ARM64-Re300

    Re300-arm64

        是一个64位的ARM程序。使用IDA加载,蹦出来这个框框,就是说IDA6.6还没有对ARM64位的程序实现relocation的分析。

        就是由于这个,所以连对libc库函数的调用都看不到了。如下图是start函数:

        连__libc_start_main都看不到了,此外,程序里对strlen,malloc,memset,scanf等库函数的调用都看不到了,好一个糟糕。如果看一下.got.plt,你会发现原因就在这里,.got.plt里东西真的不是我们想看到的。

    为了解决这个问题,我用readelf来帮助我。

     

        有了这些东西,我对程序里的一些函数名称手动进行了rename,这样就可以分析下去了。现在在看start,是不是好多了呢?

        这样之后,就可以分析下去了。Main函数很简单,读入字符串,处理,如果符合要求,则输出congratulations。

        

        下面就可以对程序的算法进行分析了,我利用qemu搭了一个ARM架构的64位的Ubuntu服务器,然后也可以调试了。

        最后分析的算法是:读入一串字符串,依次取出3个字符,3个字符是24比特,从24比特中依次取出6个比特当作一个字符,那么 3个字符就变作4个字符了,如果用户输入长度为15的字符串,则经过处理后得到长度为20的字符串。对这一处理后的字符串,程序依次取出5个字符,列出了5个方程(通过分析算法得到)。那么我们解这5个方程就可以确定这5个字符,进而可以确定输入。

     

     

     

     

  • 相关阅读:
    JVM底层原理 内存模型+GC垃圾回收
    新Socket与网络小结
    Redis五大数据结构及基本指令用法
    MySql高级汇总-事务,索引,SQL调优,分库分表,读写分离
    笔试错题整理
    设计模式(思路)
    网络编程
    linux
    基础算法--KMP匹配字符串
    基础算法--整数二分
  • 原文地址:https://www.cnblogs.com/wangaohui/p/5161178.html
Copyright © 2011-2022 走看看