内部赛第四届网络安全攻防大赛①-初赛-个人赛 Writeup

谁有别的题 wp 留言或者私信 大家集合一下。

Crypto

TODO | prime

ezcode

大厨 自动解

古典

维吉尼亚在线爆破.

Reverse

Paddle Strike

用python3.7

python pyinstxtractor.py Paddle.exe
解压出re1.pyc
用pycdas.exe re1.pyc 得到一串base64

ZmxhZ3tmYTY5Njc0My04ZDBmLTQwZjctOGZjMi1lMGU2NzIwODdmYjl9

flag{fa696743-8d0f-40f7-8fc2-e0e672087fb9}

3m4

from natsort import natsorted
from z3 import *

key = [BitVec('s1_%d' % i, 8) for i in range(16)]

solver = Solver()

for i in range(len(key)):
    solver.add(key[i] - 128 < 0)
    solver.add(key[i] - 32 > 0)

solver.add((((((((((((((((key[0] * 41) - (key[1] * 16)) + (key[2] * 84)) + (key[3] * 35)) - (key[4] * 74)) + (key[5] * 33)) + (key[6] * 58)) + (key[7] * 70)) - (key[8] * 83)) - (key[9] * 48)) + (key[10] * 68)) + (key[11] * 82)) + (key[12] * 90)) - (key[13] * 37)) - (key[14] * 60)) + (key[15] * 23) == 22064)
solver.add((((((((((((((((-key[0]) * 63) - (key[1] * 76)) - (key[2] * 79)) - (key[3] * 34)) + (key[4] * 64)) - (key[5] * 93)) - (key[6] * 16)) - (key[7] * 69)) - (key[8] * 34)) + (key[9] * 19)) + (key[10] * 17)) + (key[11] * 66)) + (key[12] * 93)) - (key[13] * 57)) + (key[14] * 77) + (key[15] * 45) == -9131)
solver.add(((((((((((((((((-key[0]) * 28) + (key[1] * 79)) - (key[2] * 43)) + (key[3] * 19)) + (key[4] * 58)) + (key[5] * 82)) - (key[6] * 20)) + (key[7] * 15)) - (key[8] * 15)) - (key[9] * 65)) + (key[10] * 92)) + (key[11] * 71)) + (key[12] * 34)) + (key[13] * 71)) - (key[14] * 26)) + (key[15] * 37) == 30351)
solver.add((((((((((((((((key[0] * 60) + (key[1] * 38)) - (key[2] * 24)) + (key[3] * 24)) + (key[4] * 36)) + (key[5] * 50)) - (key[6] * 56)) - (key[7] * 25)) - (key[8] * 88)) - (key[9] * 14)) - (key[10] * 77)) + (key[11] * 77)) + (key[12] * 80)) - (key[13] * 41)) - (key[14] * 42)) + (key[15] * 90) == 9755)
solver.add((((((((((((((((key[0] * 13) - (key[1] * 21)) - (key[2] * 96)) + (key[3] * 82)) + (key[4] * 63)) + (key[5] * 87)) - (key[6] * 71)) - (key[7] * 77)) + (key[8] * 34)) + (key[9] * 95)) - (key[10] * 21)) + (key[11] * 51)) + (key[12] * 54)) + (key[13] * 81)) - (key[14] * 70)) + (key[15] * 86) == 25623)
solver.add((((((((((((((((key[0] * 18) + (key[1] * 70)) - (key[2] * 82)) + (key[3] * 69)) + (key[4] * 77)) + (key[5] * 44)) + (key[6] * 41)) - (key[7] * 43)) - (key[8] * 76)) + (key[9] * 67)) + (key[10] * 36)) + (key[11] * 32)) - (key[12] * 19)) - (key[13] * 41)) - (key[14] * 69)) + (key[15] * 39) == 18410)
solver.add((((((((((((((((key[0] * 59) - (key[1] * 83)) - (key[2] * 34)) - (key[3] * 55)) - (key[4] * 42)) - (key[5] * 86)) + (key[6] * 93)) + (key[7] * 97)) - (key[8] * 88)) - (key[9] * 90)) - (key[10] * 63)) - (key[11] * 76)) - (key[12] * 84)) - (key[13] * 84)) + (key[14] * 96)) - (key[15] * 76) == -39929)
solver.add((((((((((((((-key[0]) * 72) + (key[1] * 81)) - (key[2] * 10)) - (key[3] * 58)) - (key[4] * 55)) - (key[5] * 94)) - (key[6] * 48)) + (key[7] * 79)) - (key[8] * 81)) - (key[9] * 83)) - (key[10] * 32)) - (key[11] * 77)) + (key[12] * 17) + (key[13] * 78) + (key[14] * 97) + (key[15] * 97) == -11909)
solver.add((((((((((((((((key[0] * 81) + (key[1] * 45)) - (key[2] * 37)) + (key[3] * 69)) + (key[4] * 48)) - (key[5] * 22)) - (key[6] * 61)) - (key[7] * 44)) - (key[8] * 26)) - (key[9] * 30)) + (key[10] * 21)) + (key[11] * 41)) + (key[12] * 33)) - (key[13] * 49)) - (key[14] * 98)) + (key[15] * 94) == 11780)
solver.add((((((((((((((((key[0] * 72) - (key[1] * 94)) + (key[2] * 77)) - (key[3] * 70)) + (key[4] * 10)) - (key[5] * 33)) + (key[6] * 58)) - (key[7] * 48)) + (key[8] * 65)) + (key[9] * 21)) + (key[10] * 33)) - (key[11] * 35)) - (key[12] * 90)) + (key[13] * 69)) - (key[14] * 10)) - (key[15] * 20) == -6077)
solver.add(((((((((((((key[0] * 11) + (key[1] * 28)) + (key[2] * 13)) + (key[3] * 92)) + (key[4] * 24)) - (key[5] * 35)) + (key[6] * 80)) + (key[7] * 51)) + (key[8] * 41)) + (key[9] * 42)) - (key[10] * 19)) - (key[11] * 78)) + (key[12] * 32) + (key[13] * 33) + (key[14] * 27) + (key[15] * 40) == 22889)
solver.add((((((((((((((((key[0] * 62) + (key[1] * 33)) + (key[2] * 67)) + (key[3] * 13)) + (key[4] * 24)) - (key[5] * 96)) + (key[6] * 46)) - (key[7] * 94)) - (key[8] * 91)) + (key[9] * 25)) - (key[10] * 37)) + (key[11] * 17)) + (key[12] * 39)) + (key[13] * 80)) - (key[14] * 94)) - (key[15] * 22) == -8594)
solver.add(((((((((((((key[0] * 57) - (key[1] * 83)) - (key[2] * 82)) + (key[3] * 78)) - (key[4] * 37)) - (key[5] * 76)) + (key[6] * 84)) + (key[7] * 63)) + (key[8] * 33)) + (key[9] * 50)) - (key[10] * 96)) - (key[11] * 12)) + (key[12] * 96) + (key[13] * 19) + (key[14] * 62) + (key[15] * 51) == 7626)
solver.add(((((((((((((((((-key[0]) * 67) - (key[1] * 85)) + (key[2] * 13)) + (key[3] * 11)) - (key[4] * 53)) + (key[5] * 40)) + (key[6] * 52)) - (key[7] * 43)) - (key[8] * 63)) + (key[9] * 61)) - (key[10] * 18)) + (key[11] * 14)) - (key[12] * 92)) + (key[13] * 77)) - (key[14] * 91)) + (key[15] * 42) == -7984)
solver.add((((((((((((((((key[0] * 53) + (key[1] * 69)) - (key[2] * 57)) + (key[3] * 40)) + (key[4] * 48)) - (key[5] * 50)) - (key[6] * 40)) - (key[7] * 90)) + (key[8] * 69)) + (key[9] * 84)) + (key[10] * 65)) - (key[11] * 56)) + (key[12] * 90)) + (key[13] * 56)) - (key[14] * 50)) + (key[15] * 97) == 23771)
solver.add((((((((((((((((key[0] * 85) + (key[1] * 86)) + (key[2] * 19)) - (key[3] * 47)) + (key[4] * 16)) - (key[5] * 17)) - (key[6] * 77)) + (key[7] * 54)) + (key[8] * 59)) - (key[9] * 19)) - (key[10] * 53)) + (key[11] * 52)) - (key[12] * 64)) + (key[13] * 95)) - (key[14] * 66)) - (key[15] * 61) == -6025)

print(solver.check())
res = solver.model()

# lst = natsorted([(k, res[k]) for k in res], key=lambda x: x)

lst = natsorted([(k, res[k]) for k in res], lambda x: str(x[0]))
for k, v in lst:
    print(chr(v.as_long()), end='')
# 073c8c07-4f57-4b

解SM4

import base64
from sm4 import SM4Key

key = b'073c8c07-4f57-4b'
key0 = SM4Key(key)

cip = base64.b64decode('v1Ch6xr+j7QmHL8BC7VrbPViEDGe9oi+WkvsHpD3308Zwu8l0KAhko9GSDSHkREg')
decrypt = key0.decrypt(cip, padding=True)
print(decrypt)
# b'flag{073c8c07-4f57-4b87-a640-4c0590e25b3a}'

Misc

黑神话-CS

stegsolve 提取rgb 0位置 . 保存为txt, brainfuck解密.

蚂蚁上树

77号包
ssY2QgIi92YXIvd3d3L2h0bWwiO2VjaG8gJ0RKP0VMZmNgQkFgQmNcYURfY1xjYWhhXEBoZEFcREJgQENBZUFBQ0FjTicgPiBwZXRyb2xldW07ZWNobyAyNmM0MTc7cHdkO2VjaG8gYmYwOTc3
去掉前2位.base64解码.
再rot47 - rot13.

Anter

70764包
E5Y2QgIi92YXIvd3d3L2h0bWwiO2hleGR1bXAgc2VjcmV0O2VjaG8gYWVkMzc3O3B3ZDtlY2hvIDgzOTZhZTFh
解出
cd "/var/www/html";hexdump secret;echo aed377;pwd;echo 8396ae1a
对应的响应包rot13

7p4158
0000000 4d32 776d 7151 4273 3165 4d4e 6a45 4d30
0000010 6c5a 3634 7274 7a4c 7635 6134 4555 754d
0000020 4561 6158 4a6c 4672 6b6e 7377 3654 3874
0000030 4554 6e73 4763 4749 0a4c
000003a
aed377
/var/www/html
8396ae1a
s7o0pno35701

解出的是 M2wmqQBs1eMNjEM0lZ64rtzLv5a4EUuMEaaXJlFrknsw6T8tETnsGcGI
L
再解不出来了。
直接搜 /secret 找到29001包

得到 2MmwQqsBe1NMEj0MZl46trLz5v4aUEMuaEXalJrFnkwsT6t8TEsncGIGL

base62解flag flag{9081a884-174d-47a7-acd3-675c77955021}

天注定

705 时判断为真。根据有password的行读取数据。

CAST(password AS NCHAR),0x20) FROM security.users ORDER BY id LIMIT 0,1),2,1))>107

flag{b53adaf47d}

注服你

过滤 != 来找信息

secret-1ChaiTin_2024!!!!1
secret-2See_You_Again!!!23
secretsB1RrLsz1/5rce0Td1s/HGqx0CX+N3hcDbah52rhMVV8a6DW3awN7dLCOLVosSMM

Pwn

fd

  fd = open("./flag", 0, envp);
  if ( fd >= 0 )
  {
    fd2 = (unsigned __int8)(16 * fd + 82);
    if ( dup2(fd, fd2) >= 0 )
    {
      close(fd);
      puts("Please input its fd: ");
      __isoc99_scanf("%d", &v5);
      v6 = read(v5, buf, 0x4FuLL);
      if ( v6 >= 0 )
      {
        buf[v6] = 0;
        puts(buf);
        return 0;
      }

fd正确时输出 flag

默认为3, 3*16+82 = 130

TODO | ezpwn

TODO | ezheap

posted @ 2024-12-22 14:09  wgf4242  阅读(2)  评论(0编辑  收藏  举报