欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

[BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker

发布时间:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

网上大部分是动调,我尝试IDC解一下,

无壳,32位,放入IDApro,查看main函数

查看wrong和str函数,借出假的flag

a=[0x66,0x6B,0x63,0x64,0x7F,0x61,0x67,0x64,0x3B,0x56,0x6B,0x61,0x7B,0x26,0x3B,0x50,0x63,0x5F,0x4D,0x5A,0x71,0x0C,0x37,0x66] for i in range(24):if(i&1==0):a[i]=chr(i^a[i])else:a[i]=chr(i+a[i]) print(''.join(a))

flag{fak3_alw35_sp_me!!}

,查看encrypty函数( 这题主要记录一下SMC的IDC脚本过程,SMC上一篇有介绍)

首先选中上面代码段部分(黑色),按D键,先转化为数据

然后使用IDC脚本

#include <idc.idc>static main() {auto addr = 0x401500;auto i = 0;for(i=0;i<187;i++){PatchByte(addr+i,Byte(addr+i)^0x41);} }

 脚本运行之后还是不可以反编译

我们选中黄色数据按c键转化为代码。

然后选中下面的一大段数据,右键强制分析。

选force然后,选中红色区域,按p定义为函数。

反汇编之后

 

 简单的异或,Buffer的内容为

'hahahaha_do_you_find_me?'

写脚本

v3=[0x0E,0x0D,0x09,0x06,0x13,0x05,0x58,0x56,0x3E,0x06,0x0C,0x3C,0x1F,0x57,0x14,0x6B,0x57,0x59,0x0D] buffer='hahahaha_do_you_find_me?' b=list(buffer) f='' for i in range(19):print(chr(ord(b[i])^v3[i]),end='')

 结果:flag{d07abccf8a410c

少了一部分,我们继续看看汇编,我们先得把finally函数部分D键转化为数据,然后再把黄色(和灰色)部分C键转化为code,然后所有p定义为函数,再F5;

我懵逼了,没看懂。。。。

后面看的大佬的wp     大佬的wp (去看汇编代码!!!,猜测最后几位是与%tp&:是异或关系)

七分逆向,三分脑洞!!!

 最后 flag{d07abccf8a410cb37a}

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的[BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。