[长安“战疫”网络安全卫士守护赛]cute_doge
[RE] cute_doge
flag{Ch1na_yyds_cazy}
本题极其简单,关键在于熟练掌握Base64的标志
打开程序康康:
狗子这么可爱,当然是选择相信他了(误
从理论上讲,这样的具有大量引用和动态链接库的程序其核心代码可能真的不在可执行程序里,有时编译器会将具体执行的程序放在可执行程序外。但是这题不一样,这可是可爱的狗子(误)我们通过查壳看到没有障碍之后使用ida 64
进行反汇编,同时打开Strings
子窗口进行查找:
从系统菜单上看出这个程序应该内置了一个字符串cute_doge
,因此我们就去找找这个字符串:
不出所料果然在程序内部。接着定位到程序内部查看具体实现。此处双击字符串之后弹出对应的.rdata
内容,按下x
进行交叉引用查找,从而跳到程序执行段:
按下F5
试图生成伪代码,有趣的是主办方居然没有任何混淆(似乎这次就没考)
注意到上面一个极为显眼的字符串:
*v42 = QString::fromAscii_helper((QString *)"ZmxhZ3tDaDFuYV95eWRzX2Nhenl9", (const char *)0x1C, v43);
你不禁大喜过望,将这段字符串拖入Base64
解密程序即可解出flag
。
重点就在于对flag
文本加密的敏感性。本题优点凑巧,如果改为cazy{...}
就没有那么容易看出来了。
作者发布、转载的任何文章中所涉及的技术、思路、工具仅供以安全目的的学习交流,并严格遵守《中华人民共和国网络安全法》、《中华人民共和国数据安全法》等网络安全法律法规。
任何人不得将技术用于非法用途、盈利用途。否则作者不对未许可的用途承担任何后果。
本文遵守CC BY-NC-SA 3.0协议,您可以在任何媒介以任何形式复制、发行本作品,或者修改、转换或以本作品为基础进行创作
您必须给出适当的署名,提供指向本文的链接,同时标明是否(对原文)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示作者为您或您的使用背书。
同时,本文不得用于商业目的。混合、转换、基于本作品进行创作,必须基于同一协议(CC BY-NC-SA 3.0)分发。
如有问题, 可发送邮件咨询.