ISCC 2017 部分解题记录 By Assassin

本文详细记录了ISCC 2017网络安全挑战赛(CTF)的部分解题过程,涉及题目包括轮转密码、RSA加密、数字签名验证、图片隐藏信息、二维码解密、文件压缩包分析等。通过使用各种工具和算法,作者逐步揭示了每个题目的解题思路和关键步骤。
摘要由CSDN通过智能技术生成

Basic 50 Wheel Cipher

加密表:
1:  < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2:  < KPBELNACZDTRXMJQOYHGVSFUWI <
3:  < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4:  < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5:  < IHFRLABEUOTSGJVDKCPMNZQWXY <
6:  < AMKGHIWPNYCJBFZDRUSLOQXVET <
7:  < GWTHSPYBXIZULVKMRAFDCEONJQ <
8:  < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9:  < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <

密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密文为:NFQKSEVOQOFNP

直接google一下发现是什么二战时期的一个轮转加密,直接按照他得规律写脚本就好了

#coding:utf-8
import re
sss='''
1:  < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2:  < KPBELNACZDTRXMJQOYHGVSFUWI <
3:  < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4:  < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5:  < IHFRLABEUOTSGJVDKCPMNZQWXY <
6:  < AMKGHIWPNYCJBFZDRUSLOQXVET <
7:  < GWTHSPYBXIZULVKMRAFDCEONJQ <
8:  < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9:  < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11  < MNBVCXZQWERTPOIUYALSKDJFHG <
12  < LVNCMXZPQOWEIURYTASBKJDFHG <
13  < JZQAWSXCDERFVBGTYHNUMKILOP <
'''
#密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
#密文为:NFQKSEVOQOFNP
m="NFQKSEVOQOFNP"
content=re.findall(r'< (.*?) <',sss,re.S)
iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
vvv=[]
ans=""
for i in range(13):
    index=content[iv[i]-1].index(m[i])
    vvv.append(index)

for i in range(0,26):
    flag=""
    for j in range(13):
        flag+=content[iv[j]-1][(vvv[j]+i)%26]
    print flag

发现flag

这里写图片描述

Basic 100 说我作弊,需要证据

本题目是一个 RandomsCTF上的原题,是一个比较好的RSA+数字验证的题目!下面讲一下解题的步骤
首先我们拿到了一个数据包,然后观察一下TCP流可以找到有许多base64加密的数据流

这里写图片描述

然后我们首先base64解密一下观察一下

SEQ = 13; DATA = 0x3b04b26a0adada2f67326bb0c5d6L; SIG = 0x2e5ab24f9dc21df406a87de0b3b4L;
SEQ = 0; DATA = 0x7492f4ec9001202dcb569df468b4L; SIG = 0xc9107666b1cc040a4fc2e89e3e7L;
SEQ = 5; DATA = 0x94d97e04f52c2d6f42f9aacbf0b5L; SIG = 0x1e3b6d4eaf11582e85ead4bf90a9L;
SEQ = 4; DATA = 0x2c29150f1e311ef09bc9f06735acL; SIG = 0x1665fb2da761c4de89f27ac80cbL;
SEQ = 18; DATA = 0x181901c059de3b0f2d4840ab3aebL; SIG = 0x1b8bdf9468f81ce33a0da2a8bfbeL;
SEQ = 2; DATA = 0x8a03676745df01e16745145dd212L; SIG = 0x1378c25048c19853b6817eb9363aL;
SEQ = 20; DATA = 0x674880905956979ce49af33433L; SIG = 0x198901d5373ea225cc5c0db66987L;
SEQ = 0; DATA = 0x633282273f9cf7e5a44fcbe1787bL; SIG = 0x2b15275412244442d9ee60fc91aeL;
SEQ = 28; DATA = 0x19688f112a61169c9090a4f9918dL; SIG = 0x1448ac6eee2b2e91a0a6241e590eL;
...

然后我们观察,可以通过查找资料发现,这个就是RSA+数字签名

然后我们已经知道了Alice和Bob的公钥对

X老师怀疑一些调皮的学生在一次自动化计算机测试中作弊,他使用抓包工具捕获到了Alice和Bob的通信流量。狡猾的Alice和Bob同学好像使用某些加密方式隐藏通信内容,使得X老师无法破解它,也许你有办法帮助X老师。X老师知道Alice的RSA密钥为(n, e) = (0x53a121a11e36d7a84dde3f5d73cf, 0x10001) (192.168.0.13)?,Bob的RSA密钥为(n, e) =(0x99122e61dc7bede74711185598c7, 0x10001) (192.168.0.37)

然后我们有一个大数分解的神奇网站
大数分解

然后我们可以分别分解n得到Alice和Bob运算中的p和q

Alice's p and q are 38456719616722997 and 44106885765559411.
Bob's p and q are 49662237675630289 and 62515288803124247.

然后我们可以通过 扩展欧几里得算法得到d,好多人用的python gmpy库,但是windows下太难装了,而我们直到p和q后根据RSA算法知道

N=p1q1

ed==1mod((p1)(q1))

简单讲一下扩展欧几里得,我们看一组简单的运算

扩展欧几里得算法求这里写图片描述的是方程的解。原理如下
设a>b,当时b==0,gcd(a,b)==a,此时x=1,y=0,否则设

这里写图片描述

由于这里写图片描述,所以进一步得到

这里写图片描述
这里写图片描述

然后我们就可以写脚本了,exgcd函数如下

def exgcd(a,b):
    if b==0:
        return 1,0
    tempx,tempy=exgcd(b,a%b)
    tmp = tempx
    x=tempy
    y = tmp - (a / b) * tempy
    return x,y

然后我们就知道两个人的d了

然后我们写一个RSA的类,记录两个人的不同变量内容


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值