一道简单的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}

猜你喜欢

转载自blog.csdn.net/qq_41071646/article/details/86560266