Sleuth Kitのコマンドを使って問題文にあるディスクイメージからフラグを探していく。
手始めにmmlsコマンドでパーティションテーブルをダンプする。
$mmls disk.flag.img
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
000: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
001: ------- 0000000000 0000002047 0000002048 Unallocated
002: 000:000 0000002048 0000206847 0000204800 Linux (0x83)
003: 000:001 0000206848 0000411647 0000204800 Linux Swap / Solaris x86 (0x82)
004: 000:002 0000411648 0000819199 0000407552 Linux (0x83)
4つ目のパーティションが最も容量の大きいメインのパーティションぽいのでここを掘っていく。
$fls -o 411648 disk.flag.img
d/d 460: home
d/d 11: lost+found
d/d 12: boot
d/d 13: etc
d/d 81: proc
d/d 82: dev
d/d 83: tmp
d/d 84: lib
d/d 87: var
d/d 96: usr
d/d 106: bin
d/d 120: sbin
d/d 466: media
d/d 470: mnt
d/d 471: opt
d/d 472: root
d/d 473: run
d/d 475: srv
d/d 476: sys
d/d 2041: swap
V/V 51001: $OrphanFiles
順番にflsで見ていくとrootにそれっぽいファイルが見つかる
$fls -o 411648 disk.flag.img 472
r/r 1875: .ash_history
r/r * 1876(realloc): flag.txt
r/r 1782: flag.txt.enc
flag.txtとflag.txt.encという明らかにフラグを持ってそうなファイルがあるので
それぞれicatで覗いてみる
$icat -o 411648 disk.flag.img 1876
-0.881573 34.311733
$icat -o 411648 disk.flag.img 1782
Salted__0!-6V0Ul&:pj_10|h
Ȥ7 ؎$'%
flag.txtは何か処理されて数字になってしまっている
flag.txt.encはファイル名からも中身の文字列からもSaltされてエンコードされている
flag.txt.encをデコードすればよさそうなので、手掛かりを探す。
同じフォルダに.ash_history
があるbashの履歴はbash_history
ファイルに保存されるので
おそらく.ash_history
にもシェルのコマンド履歴がありそうな予感がする。
icatで覗いてみる。
$ icat -o 411648 disk.flag.img 1875
touch flag.txt
nano flag.txt
apk get nano
apk --help
apk add nano
nano flag.txt
openssl
openssl aes256 -salt -in flag.txt -out flag.txt.enc -k unbreakablepassword1234567
shred -u flag.txt
ls -al
halt
opensslでflag.txtをエンコードした結果をflag.txt.encに保存しているので
同じキーを使ってopensslでデコードしてやればよさそう。
flag.txt.encの中身を別途ファイルに書き出してopensslのコマンドをたたいてデコードすると
WARNINGの後にフラグ文字列が現れる
$openssl aes256 -d -in flag.txt.enc -k unbreakablepassword1234567