zoukankan      html  css  js  c++  java
  • The 5th A&D-CTF

    Crypto

    1.convert

    提示说一进制,二进制,三进制。。。。。。分析可知,数据中最大为3。故可能该数据为三进制。然后转化为十进制,在转化成文本。脚本如下:

    flag{crypto_1s_easy}
    

    2.babyRSA(最后做的)

    下载题目解压有如下:

    之前有了解过rsa相关。然后想到题目有多项式。尝试搜索 多项式rsa。得到一个。。不过环境搭建了好几个小时。那个stagemath下载了win版本的,弄了好阵子。。。才懂得怎么用。。。。。。然后复现的时候,不是这里出问题就是那里出问题。。。总之,感觉这道题不应该出现在招新题。。。python还没怎么搞明白就各种库。。。。超纲啦。。。

    如下:

    最后那个库装不了。。把运行出来的flag放在在物理机跑出来了

    flag{P1ea5e_k33p_N_as_A_inTegeR~~~~~~}
    

    3.easyRSA

    下载题目,是一个.py文件。打开后。里面有两组 n.e.c

    看到第一组,n小,e小。里面想到了分解n得到p和q

    然后脚本跑一下

    分解出来,发现只是一半

    然后数了一下刚好发现16位数。猜测剩下16位数在下面一组。继续。。。

    第二组卡了整整一天。。。。。。。一直弄的是那道我就感觉是低指数加密攻击,,然后搞了一天没搞出来。上网找的模板也改了一天没改出来,。中间还把python3删掉换了python2,,然后。。很多东西出问题了。。例如我IDA。。。。每次启动都有

    提示,哭了,到时候再问师兄吧。

    然后还是解不出来,然后跑去问群主,群主说 hastad。。我上网搜了一下,是低指数广播攻击,但是要有多组n相同e才行。。。。然后感觉老是不对劲,一直试也试不出来。。。难受。。然后。。。忘了啥时候。。出现新的hint。。是低指数攻击。。然后回到我原来的方法。。。继续改脚本。。最后改出来了。。。

    然后直接两个合并

    得到flag

    flag{57d6638c4c490b9601f77d11ba271d92}
    

    4.贝斯家族与变异的罗马奠基人

    这题简单。,虽然中间卡了一下。然后对着ASCII码.搞出来了

    贝斯六十四世=base64

    罗马奠基人=凯撒加密

    先base解密网站解密有:64636877667866397C69706D4267

    看到D先到,。这可能是十六进制编码。然后数了一下,刚好为偶数。

    然后转化成文本:dchwfxf9|ipmBg

    然后网上找的凯撒在线解密平台

    解密。显而易见的失败了。。。题目说了变异变异。。然后了解到凯撒加密是依靠平移实现的。

    对ABCD的平移失败了。。那可能是ASCII码表的平移了。。尝试+一直加了二十多个,没有特殊意义的字符串。。然后试试减,,减一就出来了

    脚本如下:

    flag{caesar_1s_ea5Y}
    

    web

    1.web签到

    进去直接有密文,。但是不能右键打开源码。。直接f12。。然后找到标签下的该值。(手速要快)

    ​ bG9sLGFyZSB5b3UgdHlwaW5nIG9uZSBieSBvbmU/b2ssaXQncyB5b3VyIGZsYWc6ZmxhZ3toMzExMF9odG0xfei/juaOpeWPpuS4gOS4quaZqOabpu+8jOW4puadpeWFqOaWsOepuuawlOawlOaBr+aUueWPmOaDheWRs+S4jeWPmO+8jOiMtummmemjmOa7oeaDheiwiuaIkeWutuWkp+mXqOW4uOaJk+W8gO+8jOW8gOaUvuaAgOaKseetieS9oOaLpeaKsei/h+WwseacieS6hum7mOWlke+8jOS9oOS8mueIseS4iui/memHjOS4jeeuoei/nOi/kemDveaYr+WuouS6uuivt+S4jeeUqOWuouawlOebuOe6puWlveS6huWcqOS4gOi1t++8jOaIkeS7rOasoui/juS9oOaIkeWutuenjeedgOS4h+W5tOmdku+8jOW8gOaUvuavj+auteS8oOWlh+S4uuS8oOe7n+eahOWcn+WjpOaSreenje+8jOS4uuS9oOeVmeS4i+WbnuW/humZjOeUn+eGn+aCiemDveaYr+WuouS6uuivt+S4jeeUqOaLmOekvCDnrKzlh6DmrKHmnaXmsqHlhbPns7vvvIzmnInlpKrlpJror53pophBJkTmrKLov47kvaDvvIzkuLrkvaDlvIDlpKnovp/lnLA=

    看到=号。。不用想,直接打开base64解码平台解码。

    得到flag

    flag{h3110_htm1}
    

    2.最强心算

    三秒钟提交。。。。再快也无法。。

    然后看到这道题一下子很多人做出来。然后理解了一下,又想到之前学过一点爬虫。但是忘了。。感觉能做然后边学边做。

    先请求,然后爬取,。然后提交,网上也有类似的模板,。拿来改一下正则,和提交按钮。成功kill。

    flag{Y0u_D0n3_751737b66c5621a0}
    

    Misc

    1.签到题

    扫码。关注公众号,发送关键词:flag

    得到flag

    flag{we1c0me_t0_AD_Lab}
    

    2.find_the_flag

    拖进010,发现为zip文件。
    改后缀

    打开

    flag{i_f1nd_it!!!}
    

    3.秋天第一杯奶茶

    明显要改高度。拖进010。先进属性看一下高宽。然后改为十六进制在png第二行。对比找到。然后改高度就行,改高一点

    flag{i_love_milk_t34}
    

    4.明文攻击(未)

    不知道为什么明文攻击做不出来,。。。换了好几个压缩工具了。。。两个版本的AC。。。我个太难了。。

    5.baby拼图

    用PS,拼接旋转一下。

    6.合格的社工选手(未)

    得到压缩包,但不知道怎么找压缩密码。。。原来群主头像有文章可循。。。。。

    7.ADblind

    两个图片都伪加密了。把压缩包拖进010改两个图片的伪加密位

    得到两张图片。。一开始我脚本错了。。搞了半天。然后换个脚本成功跑出来

    指令 python2 decode.py ADblind.png ADori.png

    有点难看。。。

    flag{blindwater_is_interesting}
    

    8.easy拼图

    题目说要用python脚本。。。但是当时没注意,。对比原图。直接找出来了。。

    因为图片没有经过旋转之类的操作一个一个拖着靠近一点,拼出flag

    flag{m4rvel_i5_50_coolll!!!}
    

    reverse

    1.CrackMe01

    在main发现。第一行先复制15个数到v3

    我们进unk_427070.发现

    然后根据strcmp函数可知。我们要比较。而比较后的是已经加密过的。加密过的字符串就是上面图中的这串,而加密脚本在sub_40100

    原字符串与4异或。那解密就是将加密字符串与4异或即可

    脚本如下:

    str='bhecplmw[mw[e[bhecy'
    flag=''
    
    for i in str:
        str=ord(i)^4
        flag+=chr(str)
    
    print(flag)
    
    flag{this_is_a_flag}
    

    2.CrackMe02

    跟第一题差不多,把加密算法倒过来就是解密算法了。

    脚本:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char str[]="4:/5{1B47A4C<]ZX}";
        char str2[18] ="";
        for(int i=0;i<18;i++)
            printf("%d",str[i]);
        for (int i = 0; i<18; ++i)
        {
            if (str[i]< 40 || str[i] > 75)
            {
                if (str[i] < 82 || str[i] > 108)
                    str2[i] = str[i];
                else
                    str2[i] = str[i] - 40;
             }
            else
            {
            str2[i] = str[i] + 50;
        }
        }
        for(int i =0;i<17;i++)
        {
            printf("%c",str2[i]);
        }
    
        getchar();
        return 0;
        
    }
    
    
    flag{ctfisfun520}
    

    3.RE1

    关键字符串

    关键代码

    脚本

    str=[0x67,0x6D,0x60,0x66,0x7A,0x76,
         0x64,0x6D,0x62,0x6E,0x6C0,0x6C,0x64,0x5E,
         0x75,0x6E,0x5E,0x40,0x45,0x72,0x64,0x62,0x6D,
         0x60,0x63,0x20,0x7C]
    flag=''
    for i in str:
        print(i)
        i=((i-48)^1)+48
        flag+=chr(i)
        #flag+=chr(i)
    print(flag)
    
    
    flag{welcoہme_to_ADseclab!}
    

    4.RE2

    打开ida,shift+f12,字符串,congratulation

    已经直接给出。拼出来就是flag

    flag{This_is_you_flag}
    

    5.RE3

    关键代码:

    (注意大小端存取)

    脚本:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
    	int str[]={0x2F,0x33,0x2D,0x28,0x2D,0x27,0x3C,
         0x72,0x6D,0x25,0x14,0x40,0x15,0x64,
         0x3C,0x7C,0x7A,0x34,0x68,0x6B,0x71,
         0x74,0x65,0x68,0x22,0x7E,0x70,0x75,
         0x0C,0x47,0x47,0x11,0x15,0x43,0x45,0x44,
         0x18,0x45,0x43,0x10,0x13,0x15,0x5C};
    	char str1[]="I_LOVE_CTF!!!I_LOVE_ADSECLAB!!!!!!!!!!!!!!!";
    	char str2[43]="";
    	for(int i=0;i<43;i++)
    	{
    		str2[i]=str[i]^str1[i];
    	}
    	for(int i=0;i<43;i++)
    		printf("%c",str2[i]);
    
        getchar();
    	return 0;
    }
    

    6.CrackMe03

    直接写在函数里面了,。。。

    7.CrackMe04

    用ida打开 shift+f12

    有base64的码表。上面两个==,。显然base64加密,而码表也没换。。直接在线解码得到flag

    flag{AD_FOREVER}
    

    8.task9

    没时间,要实验课了。。。

    直接动态调试。改跳转。程序运行结果直接出flag

    补:

    打开ida调试

    运行调试的程序

    物理机打开ida附加Linux

    随便输入值让IDA跑起来。

    main函数入口下断。继续运行。

    发现关键跳,如果实现则输出为wrong

    改ZF位使其条件不成立。

    一直F8运行。程序运行完毕。输出即为flag。

    10.CrackMe06

    关键字符串

    一眼看过去。。目测突然发现,前面减一为fl,故每位减一可能为flag,用脚本跑一下看看。恰好瞎猫碰上野耗子。。直接提交。正确

    str='gmbh|BE`HPHPHP~'
    flag=''
    
    for i in str:
        str=ord(i)-1
        flag+=chr(str)
    print(flag)
    
    flag{AD_GOGOGO}
    

    11.CrackMe07

    关键函数

    有两个函数分别两个游戏。有两个解。但好像直接做最后一个也行。

    第一个:

    向上还原即可。

    脚本:

    #include<stdio.h>
    #include <stdlib.h>
    int main(){
    
    char Str[]="LRGM{GJLOXYZMGSK}";
    char v4[18]=" ";
    for ( int i = 0; i < 18; ++i )
      {
        v4[i] = Str[i];
        if ( v4[i] != '{' && v4[i] != '}' )
        {
          v4[i] -= 'x06';
          if ( v4[i] > 90 )
            v4[i] -= 26;
        }
        Str[i] = v4[i];
      }
    
      for (int i = 0; i < 18; i++)
      {
             printf("%c",Str[i]);
      }
    

    第二个。看到函数。wasd。上下左右。然后再栈又看到

    地图

    直接 ssdsssddddwwaa

    加上flag{}即可,不过在控制台提交会直接闪退。也不会提示你正确

    flag{ssdsssddddwwaa}
    

    12.music

    这道题挺好玩的。。。

    右键,只能搜索字符串。

    看到1:00想到题目说超过1:00有flag。运行到此处。这里代表程序开始从1:00开始运行。

    然后要取消断点才能运行。。没用。。再找入手点。不是想要的,可能接近了而已。想到之前超过1分钟有个字符串 1?????

    在智能搜索,找到1。。猜测附近肯定有个判断是否超过1分钟。。在附近看到一个大跳 jL 和比较的cmp。

    尝试在jl下断。程序不能运行。运行。后发现。歌曲播放时长+1S。。然后又发现CMP上面有个十六进制?,用计算机算了一下,


    发现是60的千倍,那应该是毫秒了。

    那可以肯定下的断点没有错了。(先取消断点,程序到58秒在下断。在带着断点运行一次+1S)

    将程序运行到59秒。该跳转,。不知道为啥改 Z 位不行,那就直接跳了。。。。。

    发现这里还有一个检测。。(题目也提醒我了。。。我还以为出bug了。试了好几次。。。)

    发现上面还有一个jge条件跳转。。我们在运行到那里。

    又是改Z不跳,我们直接jmp

    直接看标题改变了。。(有个坑,flag不是全部,只是后面单词而已)

  • 相关阅读:
    关于文件路径的生成
    re模块小结
    logging模块知识点及应用小结
    微信小程序上传图片
    小程序图表插件
    小程序实现多图上传、预览
    微信小程序实现验证码倒计时效果
    微信小程序上传图片,视频及预览
    小程序实现星级打分
    小程序获取系统日期时间
  • 原文地址:https://www.cnblogs.com/pupububu/p/14131185.html
Copyright © 2011-2022 走看看