[CTF/Reverse] [HackIM2020]year3000
侧边栏壁纸
  • 累计撰写 65 篇文章
  • 累计收到 3 条评论

[CTF/Reverse] [HackIM2020]year3000

x1n
x1n
2022-04-13 / 0 评论 / 10 阅读 / 正在检测是否收录...

[HackIM2020]year3000

image-20220411100214342.png

一共3000个bin

image-20220411100311691.png

前43个都要是't', 后面4位和unk_2008相同

image-20220411100416142.png

这是bin1的

bin2就变成了64位??离谱, 这个是前83位是'N', 后面8位和固定值相同

3又回到了32位, 84位的'c', 和4位的固定值, 此外固定值不同.

这样我觉得基本可以认为有两种文件, 32位的要比4位, 64位的要比8位, 前面的验证.

import subprocess
from pwn import *
def parse32(elf) :
    cnt = elf[0x661]
    ch = elf[0x668]
    nonce = elf[0x1008:0x100C]
    # print(cnt, ch, nonce)
    return (chr(ch) * cnt).encode(encoding='utf-8') + nonce
def parse64(elf) :
    cnt = elf[0x819]
    ch = elf[0x820]
    nonce = elf[0x1010:0x1018]
    # print(cnt, ch, nonce)
    return (chr(ch) * cnt).encode(encoding='utf-8') + nonce
for i in range(1, 3001) :
    file_name = "./" + str(i) + ".bin"
    with open(file_name, "rb") as f:
        content = f.read()
        if content[4] == 1 :
            payload = parse32(content)
        elif content[4] == 2 :
            payload = parse64(content)
        p = process(file_name)
        p.sendline(payload)
        s = p.recvline()
        if s != b'Well done\n' :
            print('Error', i)
        p.close()

脚本倒是写完了, 也全well done了..可是..Flag呢? 长度为3000的flag也不太现实, 难道是把这些二进制串加一起有个新的ELF?, 不妨试试

image-20220411103901715.png

显然, 这东西和ELF没什么关系, 换个思路, 我们把前面的可见字符加一起看看

image-20220411104025175.png

看着就像个Base64

image-20220411104128706.png

然而解了Base64也没什么用, 而且这Base64里竟然一个数字都没有..不是很靠谱啊

就这么来到了谜语时间么...

苦解谜语10分钟无果, 果断找wp

尼玛, 靶机题, 本地打通, 此题做完

0

评论 (0)

取消