高校网络安全管理运维赛部分misc wp

  1. 1. SecretDB
  2. 2. f or r

1. SecretDB

一个sqlite数据库,直接查看发现flag表只剩一条记录:

看样子前41个记录应该是被删了,每个记录包含了一个sort和一个message两个值。

根据SQLite3数据库文件结构解析,可以对文件中的记录进行解读:

因为记录的格式固定,很容易根据04 00 01找到其他被删掉的记录:

因为后面跟的type是0F,可以算出是长度为1的字符串类型,此时可以根据04 00 01 0F序列找出部分flag的sort和message记录,但是找完之后发现和实际flag差很多,就直接以0F作为目标进行搜索,找出0F后面跟着的所有sort和message:

排除掉一些明显不不是字符的message后得到如下flag:

有一位死活还原不出来了 就硬猜吧 最后得出flag:flag{f6291bf0-923c-4ba6-82d7-ffabba4e8f0b}

2. f or r

根据探究Windows 10 累积更新与系统文件变化可以得知当windows想要更新一个文件时,会携带两个差分文件f和r,在更新一个文件时,windows会先将当前版本的文件用当前版本的r回退到RTM版本,然后用RTM版本的文件用f更新到最新版。

而差分文件是使用ApplyDeltaB函数来对一个文件进行更改,在github上有现成的python脚本可以调用此函数。

因此我们要做的就是找出我们系统中的curl,回退到RTM版本,然后进行更新。

找到当前版本的curl和对应的补丁:

回退和更新,如果提示Error Code 13那就是文件校验没通过,应用差分文件失败,应该重新检查自己的输入文件是否符合差分文件的要求:

然后拖进IDA里搜索flag发现和version绑在一起:

因此通过--version命令查看flag: