CTF - 南邮re第10题“480小时精通C++”
新手一枚,第一次发帖,不足之处请多多指教。题目是南邮逆向的第10题“480小时精通C++”,下载附件用IDA打开:
主函数没有输入、加密函数,把程序放到Linux系统跑一下,只打印了原始数据:
在IDA函数列表看到有StringEncryptFunction(uchar *,int)加密函数,尝试用这个函数加密。
在Linux下用gdb调试该程序,设了三个断点:
当运行到断点0x42560时候:
栈里的数据是原始数据:
依次执行命令:set $rdi = $rax(rdi是StringEncryptFunction函数的第一个参数,传递的是原始数据的地址)、set $rsi = 36(rsi是StringEncryptFunction函数的第二个参数,传递的是原始数据字符个数)、set $rip = 0x4224f6(改变程序执行流程,跳转到StringEncryptFunction函数执行),然后按‘c’继续执行,当程序停下来是观察栈,得到flag:
说实话 标题和内容看的我一脸懵逼 说实话 标题和内容也看的我一脸懵逼{:1_932:} 说实话,我也是一脸懵逼..
说实话 标题和内容看的我一脸懵逼 说实话 标题和内容看的我两脸都是懵逼的 好办,举报理由就填“驴不对嘴”{:301_997:} 这个需要的技能程度高不? 虽然看不懂步骤说的是啥,但令人惊奇的是,我居然知道CTF是啥。。。 说实话,我也是一脸懵逼..