Write Up picoCTF - picoGym Challenges 

picoCTF - picoGym ChallengesのWrite Upを綴っていきます。
主に備忘録として自分用になりますが、逐次問題が解けたら更新していきます。


# Forensic

### Disk, disk, sleuth! II (130 Points)

「dds2-alpine.flag.img.gz」というファイルが与えられるので、解凍します。

```
$ gzip -d dds2-alpine.flag.img.gz
$ ls
  dds2-alpine.flag.img
```

Seulthkitを使って中身を見てみます。


```
$ mmls dds2-alpine.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   0000262143   0000260096   Linux (0x83)
```

```
$ fls -r -o 2048 dds2-alpine.flag.img | grep down-at-the-bottom.txt
+ r/r 18291:	down-at-the-bottom.txt
```

```
$ icat -o 2048 dds2-alpine.flag.img 18291
```

![flag.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217939/2265a48a-e0ca-c7f9-f224-3016fde120b3.png)


---
### Pitter, Patter, Platters (200 Points)

「suspicious.dd.sda1」というファイルが与えられます。
とりあえずFTK imagerで開くと、

<img width="600" alt="s.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217939/52d0cea8-8599-24f6-84d0-ad0faa8ea2d3.png">

フラグっぽいのがありました。

ダウンロードしてvimで開くと、フラグの文字列以外にゴミがあるので除去します。
```vim:suspicious-file.txt.FileSlack
$ vim suspicious-file.txt.FileSlack
:%s/^@//g
:wq flag.txt
※ ^@は、＜Ctrl　+　2＞
```

あとは、逆順になるように出力するだけ。
```vim:suspicious-file.txt.FileSlack
$ cat flag.txt | rev
```


---
### Sleuthkit Apprentice (200 Points)

とりあえず解凍

```
$ gzip -d disk.flag.img.gz
disk.flag.img
```

```
$ 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   0000360447   0000153600   Linux Swap / Solaris x86 (0x82)
004:  000:002   0000360448   0000614399   0000253952   Linux (0x83)
```

```
$ fls -r -o 2048 disk.flag.img
d/d 11:	lost+found
r/r 12:	ldlinux.sys
r/r 13:	ldlinux.c32
r/r 15:	config-virt
r/r 16:	vmlinuz-virt
r/r 17:	initramfs-virt
l/l 18:	boot
r/r 20:	libutil.c32
r/r 19:	extlinux.conf
r/r 21:	libcom32.c32
r/r 22:	mboot.c32
r/r 23:	menu.c32
r/r 14:	System.map-virt
r/r 24:	vesamenu.c32
V/V 25585:	$OrphanFiles
```

それっぽいのはなさそう

```
$ fls -r -o 360448 disk.flag.img | grep flag
++ r/r * 2082(realloc):	flag.txt
++ r/r 2371:	flag.uni.txt
```

ビンゴ

```
$ icat -o 360448 disk.flag.img 2371
picoCTF{by73_5urf3r_adac6cb4}
```


---
### like1000 (250 Points)

「1000.tar」というファイルがあたえられます。
とりあえずダウンロードして解凍してみます。

```
$ tar -xf 1000.tar
$ ls
  1000.tar 999.tar filler.txt
```

```
$ cat filler.txt
  alkfdslkjf;lkjfdsa;lkjfdsa
```

tarのオプションかな？わからないのでとりあえずパス。

さらに解凍したら、「998.tar」が生成されたので、1までやるやつか...

1つずつやるのはしんどいので、

```python:tar.py
import os
import subprocess

for i in reversed(range(1001)):
    filename = str(i) + '.tar'

    if (os.path.exists(filename)):
        print(filename)
        subprocess.run(['tar', '-xf', filename])
        subprocess.run(['rm', filename])
```

1つのファイルの容量が約9Mなので、解凍後削除してます。

```
$ python tar.py

$ ls
  filler.txt flag.png tar.py

$ open flag.png
```

<img width="300" alt="flag.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217939/176c52d5-d5a3-d4a6-6acc-8cc7de55786b.png">