内部赛第四届网络安全攻防大赛①-初赛-个人赛 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