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的区别