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不是全部,只是后面单词而已)