# 第四届江西省高校网络安全技能大赛 复现 2021-09-30

42 篇文章 13 订阅

## crypto

### Yusa的密码学课堂—CBC第二课

from Crypto.Cipher import AES
import os
flag='DASCTF{********************************}'
BLOCKSIZE = 16

pad_len = BLOCKSIZE - (len(data) % BLOCKSIZE) if  len(data) % BLOCKSIZE != 0 else 0

num = ord(data[-1])
return data[:-num]

def _enc(data,key,iv):
cipher = AES.new(key,AES.MODE_CBC,iv)
return encrypt

def enc(data,key):
try:
cipher = AES.new(key,AES.MODE_CBC,iv)
return encrypt
except:
exit()

def dec(data,key,iv):
try:
cipher = AES.new(key,AES.MODE_CBC,iv)
encrypt = cipher.decrypt(data)
except:
exit()

try:
key = os.urandom(16)
iv = os.urandom(16)
cipher = _enc(flag,key,iv).encode('hex')
print cipher
paintext = raw_input("Amazing function: ").decode('hex')
print enc(paintext,key).encode('hex')

backdoor = raw_input("Another amazing function: ")
assert backdoor != cipher

if dec(backdoor.decode('hex'),key,iv) == flag:
print flag
else:
print "Wow, amazing results."
except Exception as e:
print str(e)
exit()
if __name__ == "__main__":


(大概的意思就是这样，可能思路有点不清晰)


from pwn import *

context.log_level = 'debug'
#context(os='linux', arch='amd64', log_level='debug')
#os设置系统为linux系统，arch设置架构为amd64，log_level设置日志输出的等级为debug
p = remote('49.233.13.133', '52001')#连接指定地址和端口
cipher = bytes.fromhex(p.recvline()[:-1].decode())#recvline(keepends = True)接收一行，keepends为是否保留行尾的\n
c = cipher[-16:]

p.recvuntil(b'Amazing function:')#recvuntil(delims, drop=False)一直读到delims的pattern出现为止。

p.sendline(c.hex())
cx = bytes.fromhex(p.recvline()[:-1].decode())

p.recvuntil(b'Another amazing function: ')
backdoor = cipher + cx
p.sendline(backdoor.hex())

flag = p.recvline().decode()
print(flag)



### Yusa的密码学课堂—CBC第三课

from Crypto.Cipher import AES
import os
flag='DASCTF{********************************}'
BLOCKSIZE = 16

pad_len = BLOCKSIZE - (len(data) % BLOCKSIZE) if  len(data) % BLOCKSIZE != 0 else 0
return data + "=" * pad_len

return data.replace("=","")

def enc(data,key):
cipher = AES.new(key,AES.MODE_CBC,key)
return encrypt

def dec(data,key):
try:
cipher = AES.new(key,AES.MODE_CBC,key)
encrypt = cipher.decrypt(data)
except:
exit()
def s_2_l(data):#分组
s=[]
for i in range(len(data)//BLOCKSIZE):
s.append(data[BLOCKSIZE*i:BLOCKSIZE*(i+1)])
return s

try:
key = os.urandom(16)
asuy = enc(flag,key)
print asuy.encode('hex')

paintext = raw_input("Amazing function(in hex): ")
paintext = paintext.decode('hex')
print enc(paintext,key).encode('hex')
asuy = raw_input("Another amazing function(in hex): ").decode('hex')
yusa = dec(asuy,key)

flag_l = s_2_l(flag)
yusa_l = s_2_l(yusa)
for each in yusa_l:
if each in flag_l:
print(r"You're not yusa!")
exit()
print yusa.encode('hex')
except Exception as e:
print str(e)
exit()
if __name__ == "__main__":




from pwn import *
from Crypto.Cipher import AES

return s.replace(b"=", b"")

context.log_level = 'debug'
sh = remote('49.233.13.133', '51903')

cipher = bytes.fromhex(sh.recvline()[:-1].decode())
c1, c2, c3 = cipher[:16], cipher[16:32], cipher[32:48]

sh.recvuntil(b'Amazing function(in hex): ')
plaintext = b'\x00' * 32
sh.sendline(plaintext.hex())
cx = bytes.fromhex(sh.recvline()[:-1].decode())

sh.recvuntil(b'Another amazing function(in hex): ')
yusa = cx[16:32]
sh.sendline(yusa.hex())

asuy = bytes.fromhex(sh.recvline()[:-1].decode())

keyx = xor(asuy,cx[:16])

aes = AES.new(keyx, AES.MODE_CBC, keyx)
print(aes.decrypt(cipher))



## Misc

### 奇奇怪怪的编码

编码1：++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>++++++.>----.<-----.>-----.>-----.<<.+.<<<+++++++.------.>>>+.+.---.<<<.

Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook!
Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook!
Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook?
Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook. Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook? Ook.



flag{ab71cda1


b495e13b3f21


f6fd50221978}


flag{ab71cda1b495e13b3f21f6fd50221978}


### extractall

（他是斐波那契Fibonacci）

恭喜你经过21次解压后找到了我，但flag不在这儿，哈哈哈~


[REFTQ
1RGe0V
4dHJhY
eht8on
3RhbGx
8smjtq
zmckit
fSXNfU
9rskp5
a93su6
al0o68
p0l2vq
29fRnV
fco9e2
7ztjka
bvn8ta
a27s40
dxzk1l
yq6ik4
gec9bl
ufQ==]


0 1 1 2 3 5 8 13 21 34 55


REFTQ1RGe0V4dHJhY3RhbGxfSXNfU29fRnVufQ==


DASCTF{Extractall_Is_So_Fun}

• 11
点赞
• 23
收藏
觉得还不错? 一键收藏
• 3
评论

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