title: 攻防世界 srm-50
date: 2021年8月11日 15点20分
tags: 攻防世界
categories: 攻防世界
今天做题的时候,碰到了一道很有趣的题目,一个软件,邮箱注册之后,弹窗给flag。
攻防世界高手进阶区的一道题 srm-50
自我分析过程是自己从拿到题目,开始一步一步的分析过程,记录了自己的不足之处,以及思考不到位,下次希望能有所提高。
自我分析
1、PE
2、IDApro分析
(1)还是先shift + F12 查看字符串窗口
字符串太多。没耐心寻找,直接拖到了最后面。
看到几个abcdef26个字母,感觉有可疑之处。
跟进之后,发现就是几个字母。
(2)找主main函数
既然字符串窗口没有找到有用信息,那么跳转主main函数去寻找。
反编译第一个函数。
并没有发现什么有用信息。
点开第二个函数,把注意都放在了粉红色字符上。
跟进之后,没有得到结果。
分析到这里的时候,分析不动了(其实还是自己思路没打开)
观看大哥的wp之后
发现问题所在。
这里突然有所感悟!!!
在自己打开程序,瞎乱输入之后,其实弹出来了一个弹窗。
但是并没有在字符串窗口搜索这个字符串。
我们在字符串窗口搜索一下。
可以看到在,最后,发现了这个字符串。我们跟进去。
交叉引用。再反编译。
找到关键函数所在。
以上是我突发奇想得到的经验,其实在自己的上一步找main函数的时候,仔细的一点也能找到这里。
这个函数就是关键函数。
下面分析这个函数。
if语句的前面。memset函数,百度一手,
memset函数的作用:将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。
也就是从if语句前面,应该都是初始化,if语句中,看到@和 .应该是在判断邮箱是否正确。
我们可以看到,strcpy函数把Success这个信息放到了Source里面,也就是Source里面存的就是flag
看到Source的前面是一串字符,一开始没注意顺序,直接写了CXZA9bd7mGq94gcg
但是不对,后面才注意,这个数组有顺序,按顺序再写一遍。得到
flag:CZ9dmq4c8g9G7bAX
总结
在程序中,最关键的函数或许不是main函数,其次,在寻找关键字符串的时候,不能毫无目的的去寻找,像这个题一样,一开始是毫无目的,但是在明有错误提醒的字符串之后,还没注意到问题的严重性,还是瞎猫撞耗子的寻找,最后还没找到。还是得多分析分析啊。