NepCTF 2023 WP

前言:这次比赛只解出了两道Misc,Web方向因为缺乏java相关的知识(做的题太少了),没有了解过shiro反序列化漏洞——明明应该算是基础的东西,但后面看师傅们的wp才了解,还是太菜了——导致连Web的签到题都没解出,没拿到Web签到题的flag于是其它的Web题连看的资格都没有T^T。

I. 与AI共舞的哈夫曼(Misc)


下载附件后可以看到有一个compressed.bin的二进制文件,题目应该是要把这个文件按特定方式解压得到flag,于是直接看huffman.py文件

直接来看主函数,compress()函数是用来压缩input.txt文件,decompress()用来解压compressed.bin文件

重新看下代码,可以看到这是用哈夫曼函数来对文件进行解压缩操作,不过文件里缺少对decompress()函数的定义,所以要补充一个decompress()函数。手搓哈夫曼太难了,题目都说了要和AI共舞了,所以直接拿去给ChatGpt搓一个decompress函数

def decompress(input_file, output_file):
 with open(input_file, 'rb') as f:
     # Read frequency information
     num_freq = int.from_bytes(f.read(1), byteorder='big')
     frequencies = {}
     for _ in range(num_freq):
         byte = int.from_bytes(f.read(1), byteorder='big')
         freq = int.from_bytes(f.read(4), byteorder='big')
         frequencies[byte] = freq
    # Build Huffman tree
    root = build_huffman_tree(frequencies)

    # Read compressed data
    compressed_data = ""
    while True:
        byte = f.read(1)
        if len(byte) == 0:
            break
        compressed_data += "{0:08b}".format(int.from_bytes(byte, byteorder='big'))

    # Remove padding
    padding = int(compressed_data[-8:], 2)
    compressed_data = compressed_data[:-8-padding]

# Decode compressed data
current_node = root
decompressed_data = ""
for bit in compressed_data:
    if bit == '0':
        current_node = current_node.left
    else:
        current_node = current_node.right

    if current_node.char is not None:
        decompressed_data += chr(current_node.char)
        current_node = root

with open(output_file, 'w') as f:
    f.write(decompressed_data)


把函数补进huffman.py后在huffman.py所在文件夹内创建input.txt和decompressed.txt文件,然后运行huffman.py文件即可在decompressed.txt中看到flag

II. Code(Misc)

一个写c语言的平台,题目提示存在环境变量,所以flag应该是藏在环境变量中,只要把环境变量全部打印出来就好了

尝试打印环境变量,结果发现被ban了。实际上被ban的只是system和env字符,只要把env改成en或其它名字就可以绕过了,不过看别人的wp发现还可以在字符中间加个反斜杠然后换一下行来进行绕过(奇怪的绕过姿势增加了)。编译后即可打印出flag

#include<stdlib.h>
extern char**en;
int main()
{
char**var;
for(var=en;*var!=NULL;++var)
printf("%s \n",*var);
}

一点感想

自己缺少的知识还是太多了,尤其是内存、缓存、堆和栈方面。虽然这些多是pwn和逆向方向的,但感觉现在越来越多Web安全题都涉及多方面的知识,在学习Web的路上还是得看看其它方向的东西,不能偷懒。

欢迎评论区中交流
No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next