[院赛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!}

 

posted @ 2023-11-22 04:16  wakappxc  阅读(16)  评论(0编辑  收藏  举报  来源