题目给了一个sqlite的db文件,打开只有Too late, no flag for you.
应该得恢复被delete的信息,没有找到能直接恢复的工具,要么恢复不出来要么乱码,尝试手动提取
重点是单元内的结构
010editor打开secret.db,定位到flag处查看,红框下面的部分就是之前被删除的数据
从上面数据库flag表的结构,我们能看出列为id、sort和message,sort是排序用的索引,message存储可见字符,所以我们可以简单的观察上图的可见字符,也就是message,那么他们的前一位就是sort了,例如可见字符9的十六进制为39,它的前一位为0e,所以索引为0e的值为9
依次类推,提取剩余的值
0x17 -
0x0 f
0xe 9
0x1b 7
0x10 3
0xa b
0x19 2
0x14 b
0xf 2
0x12 -
0x23 4
0x16 6
0x1f a
0x25 8
0x2 a
0x1e f
0x5 f
0x3 g
0x11 c
0xc 0
0x4 {
0x22 a
0x21 b
0x7 2
0x1d f
0x26 f
0x1c -
0x9 1
0x27 0
0xd -
0xb f
0x8 9
0x1 l
0x13 4
0x29 }
0x15 a
0x28 b
0x6 6
0x1a d
0x24 e
0x20 b
写个脚本排序,输出flag
with open('1.txt', 'r') as f:
data = f.readlines()
out = [' ' for i in range(43)]
for i in data:
index, val = i.replace('\n', '').split(' ')
index = int(index, 16)
out[index] = val
flag = ''
index = 0
for i in out:
print(hex(index), i)
index += 1
flag += i
print(flag)
# flag{f6291bf0-923c-4ba6- 2d7-ffabba4e8f0b}
缺了一位,爆破一下,得出flag{f6291bf0-923c-4ba6-82d7-ffabba4e8f0b}