[HackIM2020]year3000
一共3000个bin
前43个都要是't', 后面4位和unk_2008相同
这是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?, 不妨试试
显然, 这东西和ELF没什么关系, 换个思路, 我们把前面的可见字符加一起看看
看着就像个Base64
然而解了Base64也没什么用, 而且这Base64里竟然一个数字都没有..不是很靠谱啊
就这么来到了谜语时间么...
苦解谜语10分钟无果, 果断找wp
尼玛, 靶机题, 本地打通, 此题做完
评论 (0)