什么是网络安全大赛ctf,ctf网络安全大赛百度百科
大家好关于这次比赛密码学和部分移动安全如下没错在这里我们来解题吧(不要吐槽我,嘴下饶人)
一某加密算法实现如下导入Java . nio . charset . charset:public class deen CDE { private static final string key 0= 2021。2 .26 ;私有静态最终字符集=charset。for name(“utf-8”);私有静态字节[]密钥字节=密钥0。getbytes(charset):公共静态字符串编码(string enc){ byte[]b=enc。getbytes(charset);for(int i=0,size=b . length);伊西泽;(一){对于(字节keyBytes0:keyBytes){ b[i]=(字节)();} }返回新字符串(b)和:}加密标志(吨)后为:Q[VPLDRTwQBF^YJ写出解密算法求出标志(吨)解:
导入Java . nio . charset . charset:public class deen CDE { private static final string key 0= 2021。2 .26 ;私有静态最终字符集=charset。for name(“utf-8”);私有静态字节[]密钥字节=密钥0。getbytes(charset):公共静态字符串解码(string dec){ byte[]e=dec . getbytes(charset);字节[]迪=e;for(int i=0,size=e . length);伊西泽;(一){对于(字节keyBytes0:keyBytes){ e[i]=字节()。} }返回新字符串;} public static void main(string[]args){ string dec=;系统。输出。println(enc);系统。输出。println(十二月);} }标志:标志{秒@父亲} 2 jqdld用MD5(MD5)三步跨栏套娃r 000 vedulrhnetu 5 SV 0 dnmlrhtljur 1 vavenulvhter 05 av 0 DRM 0 rntvptr 00 zredosldnfpusu 1 awdnmkrntlpusefoulptu 9 kvedrwlrfttvpwr 000 ved NST 0=解:
打开题目r 000 vedulrhnetu 5 SV 0 dnmlrhtljur 1 vavenulvhter 05 av 0 DRM 0 rntvptr 00 zredosldnfpusu 1 awdnmkrntlpusefoulptu 9 kvedrwlrfttvpwr 000 ved NST 0=题目为套娃猜想可能与基本型家族有关http://www。即时通信软件秀子。cn/biama/base 64。htmgm 4 tgnrmgtgm 3 dmnrwgm 2 tgntguztcnrugm 4 dgzwggq 3 dmmsgm 3 dgjwg 4 ztimzxgm 2 DMN ZT haztknrxgm 4 tmoqztegzvgm 4 tmoqztegzvgm 4 tgmi=3936634364364364363567356733363343433531963 ff 5651 df 474g 85 g9题目提示mmdyc!mmdyc三步则推测mmdyc!mmdyc加密位移为第339次全体会议题目提示有MD5(MD5)则在线解密339 www。cmd 5。com/flag:标志{sec2021} 3另类RSA(RSA)在RSA(RSA)体制中,某给定用户的公钥e=31,n=359,那么给该用户的私钥等于多少?
解法如下:
1.根据n=3599可得页:1分别为59和61
2.根据佩克的值可推出S7-1200可编程控制器
3 .ed1(mod(n))等价于S7-1200可编程控制器
因此d31-3480*y=1
根据扩展ngdqd算法(辗转相除法)求解:
一式:3480=31*112 8=8=3480 (-112)31
2式:31=83 7=7=31 (-3)8
3式:8=71 1=1=8 (-1)*7
将2代入3:1=8 31 8*(-3)
1=31(-1) 84
将一代入1=31(-1) [3480 31*(-112)]4
1=31(-449) 3480*4
由此得d=-449,y=4
由于d。非政府组织一般取正整数,所以d=d k(n)=449 1 * 3480=3031
所以给用户的私钥为(359.3031)
标志(吨)为:标志{3031}
4 ."移动安全
包com。举例。我的申请;导入安卓。OS。捆绑;导入安卓。查看。查看;导入安卓。小部件。按钮;导入安卓。小部件。编辑文本;导入安卓。小部件。敬酒;导入安卓克斯。app compat。app。app compat活动;公共类主要活动扩展了app compativity { private Button Button;私有编辑文本et1私有编辑文本et2/*访问修饰符由:protected */@ Override//Android x . activity。组件活动、Android x . core。app。组件活动、Android x . app compat。app。app compat活动、Android x .片段。app。片段活动public void onCreate(Bundle savedInstanceState){ super。onCreate(savedInstanceState);setContentView(r . layout。活动_主);这个。Button=(Button)findViewById(r . id。bu1);这个。et1=(EditText)findViewById(r . id。et1);这个。et2=(EditText)findViewById(r . id。et2);this.button.setOnClickListener(新视图onClick listener(){/* class com。举例。我的申请。主要活动。匿名类1 */公共void onClick(视图v){字符串S1=主活动。这个。et1。gettext().toString();字符串S2=主要活动。这个。et2。gettext().toString();新迪恩码();字符串a=deen代码。编码(标志{父亲} );如果(!s1.equals(a) !S2。equals(a)){ toast。制作文本(主要活动。“这,”登陆失败, 0).show();} else {吐司。制作文本(主要活动。“这,”解密:^TY_C^MIQVK][E,0)。show();} } });}} 可以看到有个旗提交了是错的再看用了解密类里面的方法,我们查看这个源代码
包com。举例。我的申请;导入Java。nio。字符集。字符集;public class de encode { private static final Charset Charset;私有静态最终字符串key 0= 2021。1 .19 ;私有静态字节[]关键字节;name=Charset的静态{ Charset。对于名称(“UTF-8”);charset=forNamekey bytes=key 0。getbytes(用于名称);}公共静态字符串编码(字符串enc){ byte[]b=enc。getbytes(charset);int size=b . length for(int I=0;我尺寸;I){ for(字节密钥字节0:密钥字节){ b[I]=(byte)(b[I]^密钥字节0);} }返回新字符串(b)和:}} 可以看到这是加密算法分析一下啊将参数转换为字节存在数组b里面然后遍历这个数组并且和密钥字节进行异或应该需要对这个旗帜{父亲}进行加密试着去加密
导入Java。nio。字符集。字符集;public class de encode { private static final String key 0= 2021。1 .19 ;私有静态最终字符集。for name( UTF-8 );私有静态字节[]密钥字节=密钥0。getbytes(charset);公共静态字符串编码(字符串enc){ byte[]b=enc。getbytes(charset);for(int i=0,size=b . length isizei){ for(byte key bytes 0:key bytes){ b[i]=(byte)(b[i]^keybytes0);} }返回新字符串(b)和:}公共静态void main(String[]args){ String s= flag {父亲} ;字符串enc=编码;系统。出去。println(enc);}} 运行一下
弹出来一串字符串让我们解密这个东西回想当时的加密算法写出解密算法解这个字符串
导入Java。nio。字符集。字符集;public class de encode { private static final String key 0= 2021。1 .19 ;私有静态最终字符集。for name( UTF-8 );私有静态字节[]密钥字节=密钥0。getbytes(charset);公共静态字符串解码(String dec){ byte[]e=dec . getbytes(charset);byte[]dee=e;for(int i=0,size=e . length isizei){ for(byte key bytes 0:key bytes){ e[i]=(byte)(dee[i]^keybytes0);} }返回新字符串(e)和:} public static void main(string[]args){ string dec=decode(^ty_c^miqvk][e);系统。出去。println(十二月);}} 运行一下:
标志{fuqinsec}
5、安卓一
不要脱壳
6、rsa脚本我放这里
导入binasciiiimport sys sys。setrecursionlimit(1000000)def ByteToHex(bin):返回""。join([X % x为箱中的x]).strip()def n2s(num):t=hex(num)[2:-1]# python if len(t)% 2==1:t= 0 t # print(t)return(binas CII。a2b _ hex(t).decode(latin1))def egcd(a,b): if a==0: return (b,0,1) else: g,y,x=egcd(b % a,a) return (g,x - (b //a) * y,y)def modinv(a,m): g,x,y=egcd(a,m) if g!=这次出题主要是引领zrdhl来学习安全的,各位大佬不要吐槽题目简单。后面有机会会出点难题
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。