[FlareOn4]IgniteMe
看到了跟以往不一样的代码,不要慌,仔细看其实还是大概知道是什么意思的
无非就是读取字符串,进行 in()的操作,然后再check()判断,都是逆向题的基操了
看看in()
就是对输入的字符串进行读取和要求:输入的值不能等于10或13,否则就不读取该元素,最后输出的就是我们输入的字符串
再看看check()
对输入的字符串进行一系列操作并与目标字符串进行比较,其中v1是字符串长度,跟进给v4赋值的函数
__ROL__经过搜索发现是汇编的循环左移指令,那么循环右移就是__ROR__,但这里是__ROL4__,我们不知道是什么,于是就通过调试来找到这个值
可以看到EAX中存储的就是函数运行后的结果,0x00700004,再回到check()函数
刷这么多题,for语句里的都知道什么意思了,直接找目标字符串
提取目标字符串并根据程序写脚本
这里,v4本来等于0x00700004的,我的理解是:因为目标字符里面都是两位的,其实v4也应该保留两位,不然就行不通。
得到flag{R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com}
后面的乱码不知道怎么回事