一道简单的re
这个题 我好像在哪看过 但是 好像也做过 但是现在给忘了~~~~~~
现在直接写题解把
如题 上面窗口是上面的窗口
然后 直接 下段 在 od里面找到了 这个地方 然后一步一步分析
然后进入这个函数 发现参数是我们的输入 还有很长的一个字符串
进入 ida f5发现了下面的东西
在 ida里面 看看那个字符串都进行了那些处理
感觉汇编看的不清楚 可以直接 看 伪c
估计 有一部分同学 到这里就迷糊了 为什么 要加 96 如果你写脚本 会发现 +96 会直接 出现乱七八糟的东西
在上面 一个f5 可以看的出来 其实 是 this+96 也就是说 这是封装好的一个类 而我们的字符串 的偏移是 this+96
就是相当于类的基地址+96 如果这方面不是很懂得同学可以 补一下 C++的知识
那么 我们 可以 写出脚本了
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
#include<map>
#include<time.h>
#include<math.h>
using namespace std;
char s[]={";f1K3{c5:efl21t4;1t1zaxpim9}5+?gtux;=\
vc9v{v7+buhU{bT=-am2q}=fh[xk{y?xrqe{?}l5-sd2-Mo+\
:j{9=sY[dalvpx?z3{?no{[k5ll{zjsu5[kfla+r6Zg72o0sk\
q6cGl5cw[=d?3v9q5-vkjSv{4sqtg=f0cz{+jurjfl[tb]lrfF1;2}u\
dhb?0g8{om:T4dh;z:oz-Dn=m=ux;o[gs9{+zqx+sq-dsxctcv\
ykUs2oddrt43pwv:f0;njkrb9los6g0{ih?rqantfx$sslqd:rvqixr;\
j{?o:sn+[i[yA11;gsmr8lm0?3};+iv+Tf:4Gtv2:-20upi0]7?77=;\
qzx{m-W;0vtueh]ko8d?=w:fbhd{E:;19?p=k:b+}doht6wpEq-z]2qbV1}\
dh416qw9:xm[;ed;:ecb-0:ni-s4u2kf6]2wn45amzjrun=ofkx\
-=hmgo-lz;j909=rmo7xcj4le0hxs[i]-vjl[?o12:sv4upio7ma1hRy7556+57krev:\
hLQ+1cx65z5v5];6n=[p83;n={zm{k2p"};
int main()
{
int v,sum=0;
v=10;
do
{
srand(v);
v = rand() % 10;
// printf("%d\n",v);
printf("%c",s[sum + v]);
sum+= 10;
}while(sum<330);
printf("\n");
getchar();
return 0;
}
然后得出flag是 flag{The-Y3ll0w-turb4ns-Upri$ing}