ZCTF-ARM64-Re300

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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个字符,进而可以确定输入。

技术分享

?

技术分享

?

?

?

以上是关于ZCTF-ARM64-Re300的主要内容,如果未能解决你的问题,请参考以下文章

springMVC @RestController和@Controller的区别

使用new vue() 初始化页面,如何自定义rules: 规则

SpringBoot构建电商基础秒杀项目总结

sudo apt install nvinfer*

Spring_MVC集合类型的参数赋值

Java:@Repeatable注解的使用和反射获取