[院赛2023]物转星移几度秋
根据提示nc 10.1.5.114 20005大概可以发下这个题目需要nc最后
查壳可知是64位的elf文件
拖入IDA中我们大概可以知道这是一个登录程序
所以只要我们输入正确的密码就可以拿到shell得到flag
通过这里我们可以知道首先是通过一个 rc4_init 然后 base64_encode最后与checkey进行判断
点进去rc4_init
发现这是一个对密钥Rckey的改变
点进base64_encode
大概就是一个换表的base64然后进行与
checkey来进行检查加密后是否正确
所以我们的思路就很明显就是通过远程动态调试来一步一步看
首先我们在虚拟机中运行此程序发现有反调试
字符串窗口找到traced!字符串然后交叉引用找到反调试程序
我们从头到尾将它给nop掉这样就没有了(注意nop的范围 不能多也不能少不然程序很容易坏掉)
然后再patch一下
在虚拟机中运行发现已经过了反调试了
此时我们进行远程调试
下断点
并在虚拟机中输入足够长的密码 因为后面会进行一个循环换表的过程需要足够的长度
运行到此此时我们的sboxs已经出来了但是我们先F7单步进入base64加密里面
观察特征我们可以知道他是每四个进行一个换表最后整合出来的
此时我们可以得到前三个
然后进行第二轮换表
得到703
最后慢慢来一直到最后我们可以得到63e70363435bd596e6be277859487a45这样一串数就是密码
此时我们退出调试进行nc服务器
输入账号密码 然后ls 进行cat flag拿到flag
flag{Congr4tu1ati0ns!}