记一次RC4逆向题的神奇操作

发布于 2021-01-29  207 次阅读


思路

众所周知,RC4是出了名的不统一,各个语言的RC4结果基本上都不一样,所以碰到RC4的逆向题一般只能写代码去解密。

但是,RC4有个特色就是加密和解密的过程完全一样,所以在已知密文hex和key(或者叫iv,如果有的话)的情况,直接输入密文和key(如果有的话)就能拿到明文flag。

不过,密文是乱码的,不好直接输入,那么我们就可以先随便输入对应长度的明文,然后紧接着下断点把内存里输入的东西改成密文hex,再断到加密结果的比较处,查看内存,就能拿到明文。

过程

先断在输入明文的地方,输入flag长度的任意字符。

file

找到输入的东西在内存的哪里,本题是esp+18

file

右键,二进制编辑

file

把ida分析时得到的密文hex复制进去,因为最后需要00当结尾,所以记得留个结尾(反正RC4是按字符加解密的,少个最后一位00不影响最后flag,问题不大)

file

然后输入key,这步的话看题目,有些没有,无所谓。

file

在按位比较加密结果的时候下断点,然后看一下比较的内存内容,就能拿到flag。(因为我们上面最后一位不是00的密文,所以这里的最后一位不是00

file

例题

  • [SCTF2020]get_up
  • [2021春秋新年欢乐赛]evilMem

The End