0xd13a

A rookie in a world of pwns

Sharif CTF 2018 Writeup: Crashed DB

50

Crashed DB

We lost some data when we were delivering our DB. Can you recover it??

Hint: SQLite

Download

As the hint suggests we are dealing with a SQLite file. Let’s try to open it:

1
2
3
4
5
6
7
$ sqlite3 db0.db
SQLite version 3.21.0 2017-10-24 18:55:49
Enter ".help" for usage hints.
sqlite> .tables
Error: file is not a database
sqlite> .dbinfo
unable to read database header

The file is damaged. When we do a comparison with a valid SQLite database file we can see that the header is missing. We can copy it using any binary editor:

missing header

After the modification the database can be read:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sqlite3 db0.db 
SQLite version 3.21.0 2017-10-24 18:55:49
Enter ".help" for usage hints.
sqlite> .tables
tbl
sqlite> select * from tbl;
0|S|ln?KxFjBA
3o78Gv0!N&b|h|h0EdNc#L08H
n6a$AvNIux?(|a|u
Lsoz6Y|r|u9C#1cKQ3x@
bWmk*JC|i|0P8Hy4Yc%g5Xzh
...
sqlite> .schema
CREATE TABLE tbl (Glaf varchar(15), Flag varchar(1), Lfag varchar(15));

The database seems to be full of garbage, but notice the middle column. Not only it is called Flag it seems to contain the flag, one character per row:

1
2
sqlite> select group_concat(Flag,'') from tbl;
SharifCTF{7d9ed4a5867f6bd376928a3ed7837a07}

The flag is SharifCTF{7d9ed4a5867f6bd376928a3ed7837a07}.