1625-5 王子昂 总结《2017年9月13日》 【连续第346天总结】
A. 问鼎杯题库-逆向
B.
找flag
运行后是一个单纯的文本输入框和灰色的GetFlag按钮
拖入IDA反编译,没有main函数,只有start函数
start里没看到什么可以继续往下的内容,直接搜索字符串:
一眼看到flag,兴奋地提交
错误OTZ
那看来程序中还有对flag的处理,双击追到内存然后按x查看交叉引用
有两处调用,依次查看,发现这个有趣的函数
int sub_401000()
{
char *v0; // eax@1
CHAR Text; // [sp+0h] [bp-38h]@1
char Dst; // [sp+1h] [bp-37h]@1
char v4; // [sp+Fh] [bp-29h]@1
Text = 0;
memset(&Dst, 0, 0x30u);
strncpy_s(&Text, 0x31u, "flag:{NSCTF_md57e0cad17016b0>?45?f7c>0>4a>1c3a0}", 0x30u);//将flag字符串copy到了Text中
v0 = &v4;//v4的地址送入v0中,实际上

本文记录了一次参加问鼎杯比赛时的逆向分析过程。作者通过IDA反编译程序,发现并解析了对flag的处理函数,涉及字符串异或操作。在遇到按钮不可用的问题时,通过研究内存属性和使用Spy++工具,成功使按钮变为可用,最终获取正确flag。明日计划将继续研究逆向相关问题。
最低0.47元/天 解锁文章
7550

被折叠的 条评论
为什么被折叠?



